{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实践：宿舍人脸识别门禁系统\n",
    "\n",
    "> 1. 创建FaceSet\n",
    "> 1. 查询FaceSet\n",
    "> 1. 存入face_token数据\n",
    "> 1. 获取FaceSet信息数据\n",
    "> 1. 人脸搜索\n",
    "> 1. 人脸对比\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 创建FaceSet\n",
    "\n",
    "* 描述\n",
    "> 1. 创建一个人脸的集合 FaceSet，用于存储人脸标识 face_token。一个 FaceSet 能够存储10000个 face_token。\n",
    "> 1. 试用API Key可以创建1000个FaceSet，正式API Key可以创建10000个FaceSet。\n",
    "\n",
    "* 调用URL\n",
    "> https://api-cn.faceplusplus.com/facepp/v3/faceset/create\n",
    "\n",
    "* 调用方法\n",
    "> POST\n",
    "\n",
    "* 请求参数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 人脸检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>是否必选</th>\n",
       "      <th>参数名</th>\n",
       "      <th>类型</th>\n",
       "      <th>参数说明</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>必选</td>\n",
       "      <td>api_key</td>\n",
       "      <td>String</td>\n",
       "      <td>调用此 API 的 API Key</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>必选</td>\n",
       "      <td>api_secret</td>\n",
       "      <td>String</td>\n",
       "      <td>调用此 API 的 API Secret</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>可选</td>\n",
       "      <td>display_name</td>\n",
       "      <td>String</td>\n",
       "      <td>人脸集合的名字，最长256个字符，不能包括字符^@,&amp;=*'\"</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>可选</td>\n",
       "      <td>outer_id</td>\n",
       "      <td>String</td>\n",
       "      <td>账号下全局唯一的 FaceSet 自定义标识，可以用来管理 FaceSet 对象。最长255...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>可选</td>\n",
       "      <td>tags</td>\n",
       "      <td>String</td>\n",
       "      <td>FaceSet 自定义标签组成的字符串，用来对 FaceSet 分组。最长255个字符，多个...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>可选</td>\n",
       "      <td>face_tokens</td>\n",
       "      <td>String</td>\n",
       "      <td>人脸标识 face_token，可以是一个或者多个，用逗号分隔。最多不超过5个 face_t...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>可选</td>\n",
       "      <td>user_data</td>\n",
       "      <td>String</td>\n",
       "      <td>自定义用户信息，不大于16 KB，不能包括字符^@,&amp;=*'\"</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>可选</td>\n",
       "      <td>force_merge</td>\n",
       "      <td>Int</td>\n",
       "      <td>在传入 outer_id 的情况下，如果 outer_id 已经存在，是否将 face_to...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  是否必选           参数名      类型  \\\n",
       "0   必选       api_key  String   \n",
       "1   必选    api_secret  String   \n",
       "2   可选  display_name  String   \n",
       "3   可选      outer_id  String   \n",
       "4   可选          tags  String   \n",
       "5   可选   face_tokens  String   \n",
       "6   可选     user_data  String   \n",
       "7   可选   force_merge     Int   \n",
       "\n",
       "                                                参数说明  \n",
       "0                                  调用此 API 的 API Key  \n",
       "1                               调用此 API 的 API Secret  \n",
       "2                    人脸集合的名字，最长256个字符，不能包括字符^@,&=*'\"  \n",
       "3  账号下全局唯一的 FaceSet 自定义标识，可以用来管理 FaceSet 对象。最长255...  \n",
       "4  FaceSet 自定义标签组成的字符串，用来对 FaceSet 分组。最长255个字符，多个...  \n",
       "5  人脸标识 face_token，可以是一个或者多个，用逗号分隔。最多不超过5个 face_t...  \n",
       "6                    自定义用户信息，不大于16 KB，不能包括字符^@,&=*'\"  \n",
       "7  在传入 outer_id 的情况下，如果 outer_id 已经存在，是否将 face_to...  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_html(\"\"\"<div class=\"table-wrap\"><table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col></colgroup><tbody><tr><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">是否必选</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">参数名</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">类型</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">参数说明</span></p></th></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">必选</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">api_key</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">String</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">调用此 API 的 API Key</span></p></td></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">必选</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">api_secret</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">String</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">调用此 API 的 API Secret</span></p></td></tr><tr><td class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">可选</span></td><td class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">display_name</span></td><td class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">人脸集合的名字，最长<span class=\"inline-comment-marker\" data-ref=\"9f098728-ac30-41a2-aab6-05b79f8a7d2e\">256</span>个字符，不能包括字符^@,&amp;=*'\"</span></td></tr><tr><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">可选</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">outer_id</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">账号下全局唯一的 FaceSet 自定义标识，可以用来管理 FaceSet 对象。最长255个字符，<span class=\"inline-comment-marker\" data-ref=\"63fc0fd1-cd44-4256-bab5-971a939d66e2\"><span class=\"inline-comment-marker\" data-ref=\"183dcb11-c22c-47f4-aa9c-2ba6f3c8210c\">不能包括字符^@,&amp;=*'\"</span></span></span></td></tr><tr><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">可选</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">tags</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">FaceSet 自定义标签组成的字符串，用来对 FaceSet 分组。最长<span class=\"inline-comment-marker\" data-ref=\"1be760b6-f20d-4ff3-a086-b7f763abd84d\">255</span>个字符，多个 tag 用逗号分隔，每个 tag 不能包括字符^@,&amp;=*'\"</span></td></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">可选</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">face_tokens</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">String</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">人脸标识 face_token，可以是一个或者多个，用逗号分隔。最多不超过5个 face_token</span></p></td></tr><tr><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">可选</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">user_data</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">自定义用户信息，不大于<span class=\"inline-comment-marker\" data-ref=\"f9edadb1-691d-4d80-933e-909096780f61\">16 KB，不能包括字符^@,&amp;=*'\"</span></span></td></tr><tr><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">可选</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">force_merge</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">Int</span></td><td colspan=\"1\" class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">在传入 outer_id 的情况下，如果 outer_id 已经存在，是否将 face_token 加入已经存在的 FaceSet 中</span></p><p><span style=\"color: rgb(0,0,0);\">0：不将 face_tokens 加入已存在的 FaceSet 中，直接返回 FACESET_EXIST 错误</span></p><p><span style=\"color: rgb(0,0,0);\">1：将 face_tokens 加入已存在的 FaceSet 中</span></p><p><span style=\"color: rgb(0,0,0);\">默认值为0</span></p></td></tr></tbody></table></div>\"\"\")[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 准备工作\n",
    "import requests\n",
    "API_KEY = 'h9i-8r2onqG4wPtSgjm0GxeR5EfNMqFS'\n",
    "API_S = '6ty3Cv70dIS0sofTr3uNxyxpe9vnH_zF'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# A-1 创建人脸数据集合\n",
    "FaceSet_url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/create\"\n",
    "payload = {\n",
    "    \"api_key\":API_KEY,\n",
    "    \"api_secret\":API_S\n",
    "}\n",
    "r = requests.post(url = FaceSet_url, params = payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '6795b4d2ee6a0183c29db2482f5bcece',\n",
       " 'time_used': 153,\n",
       " 'face_count': 0,\n",
       " 'face_added': 0,\n",
       " 'request_id': '1648551699,a6aae6d7-999d-4ce9-9bed-909627cb20d7',\n",
       " 'outer_id': '',\n",
       " 'failure_detail': []}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'6795b4d2ee6a0183c29db2482f5bcece'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "faceset_token = r.json()['faceset_token']\n",
    "faceset_token"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 查询FaceSet\n",
    "\n",
    "* 描述\n",
    "> 1. 获取一个 FaceSet 的所有信息，包括此 FaceSet 的 faceset_token, outer_id, display_name 的信息，以及此 FaceSet 中存放的 face_token 数量与列表。\n",
    "> 2. 注意：2017年8月16日后，调用本接口将不会一次性返回全部的 face_token 列表。单次查询最多返回 100 个 face_token。如需获取全量数据，需要配合使用 start 和 next 参数。请尽快修改调整您的程序\n",
    "\n",
    "* 调用URL\n",
    "> https://api-cn.faceplusplus.com/facepp/v3/faceset/getdetail\n",
    "\n",
    "* 调用方法\n",
    "> POST\n",
    "\n",
    "* 调用参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>是否必选</th>\n",
       "      <th>参数名</th>\n",
       "      <th>类型</th>\n",
       "      <th>参数说明</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>必选</td>\n",
       "      <td>api_key</td>\n",
       "      <td>String</td>\n",
       "      <td>调用此API的API Key</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>必选</td>\n",
       "      <td>api_secret</td>\n",
       "      <td>String</td>\n",
       "      <td>调用此API的API Secret</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>必选(二选一)</td>\n",
       "      <td>faceset_token</td>\n",
       "      <td>String</td>\n",
       "      <td>FaceSet的标识</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>必选(二选一)</td>\n",
       "      <td>outer_id</td>\n",
       "      <td>String</td>\n",
       "      <td>用户提供的FaceSet标识</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>可选（2017年8月16日起可使用）</td>\n",
       "      <td>start</td>\n",
       "      <td>Int</td>\n",
       "      <td>一个数字 n，表示开始返回的 face_token 在本 FaceSet 中的序号， n 是...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 是否必选            参数名      类型  \\\n",
       "0                  必选        api_key  String   \n",
       "1                  必选     api_secret  String   \n",
       "2             必选(二选一)  faceset_token  String   \n",
       "3             必选(二选一)       outer_id  String   \n",
       "4  可选（2017年8月16日起可使用）          start     Int   \n",
       "\n",
       "                                                参数说明  \n",
       "0                                     调用此API的API Key  \n",
       "1                                  调用此API的API Secret  \n",
       "2                                         FaceSet的标识  \n",
       "3                                     用户提供的FaceSet标识  \n",
       "4  一个数字 n，表示开始返回的 face_token 在本 FaceSet 中的序号， n 是...  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_html(\"\"\"<table class=\"wrapped confluenceTable\"><colgroup><col><col><col><col></colgroup><tbody><tr><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">是否必选</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">参数名</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">类型</span></p></th><th class=\"confluenceTh\"><p><span style=\"color: rgb(0,0,0);\">参数说明</span></p></th></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">必选</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">api_key</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">String</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">调用此API的API Key</span></p></td></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">必选</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">api_secret</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">String</span></p></td><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">调用此API的API Secret</span></p></td></tr><tr><td rowspan=\"2\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">必选(二选一)</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">faceset_token</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">FaceSet的标识</span></td></tr><tr><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">outer_id</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">String</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">用户提供的FaceSet标识</span></td></tr><tr><td class=\"confluenceTd\"><p><span style=\"color: rgb(0,0,0);\">可选</span></p><p><span style=\"color: rgb(0,0,0);\">（2017年8月16日起可使用）</span></p></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">start</span></td><td colspan=\"1\" class=\"confluenceTd\"><span style=\"color: rgb(0,0,0);\">Int</span></td><td colspan=\"1\" class=\"confluenceTd\"><p class=\"p1\"><span style=\"color: rgb(0,0,0);\">一个数字 n，表示开始返回的 face_token 在本 FaceSet 中的序号， n 是 [1,10000] 间的一个整数。 </span></p><p class=\"p1\"><span style=\"color: rgb(0,0,0);\">通过传入数字 n，可以控制本 API 从第 n 个 <span class=\"s1\">face_token </span>开始返回。返回的 face_token 按照创建时间排序，每次返回 <span class=\"s1\">100 </span>个 <span class=\"s1\">face_token</span>。</span></p><p class=\"p1\"><span style=\"color: rgb(0,0,0);\">默认值为 1。</span></p><p class=\"p1\"><span style=\"color: rgb(0,0,0);\">您可以输入上一次请求本 API 返回的 next 值，用以获得接下来的 100 个 face_token。</span></p></td></tr></tbody></table>\"\"\")[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "getdetail_url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/getdetail\"\n",
    "payload = {\n",
    "    'api_key':API_KEY,\n",
    "    'api_secret':API_S,\n",
    "    'faceset_token':faceset_token\n",
    "}\n",
    "r = requests.post(url=getdetail_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '6795b4d2ee6a0183c29db2482f5bcece',\n",
       " 'tags': '',\n",
       " 'time_used': 100,\n",
       " 'user_data': '',\n",
       " 'display_name': '',\n",
       " 'face_tokens': [],\n",
       " 'face_count': 0,\n",
       " 'request_id': '1648551705,7f78fdb2-26fe-450a-911f-4867409dfb9a',\n",
       " 'outer_id': ''}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 更新数据集描述信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "update_FaceSet_url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/update\"\n",
    "\n",
    "payload = {\n",
    "    'api_key':API_KEY,\n",
    "    'api_secret':API_S,\n",
    "    'faceset_token':faceset_token,\n",
    "    'new_outer_id':'API021214',   # api周二12-14节\n",
    "    'display_name':'20级网新API周二晚班',\n",
    "    'user_data':'59人，23男同学，36女同学'   #描述信息\n",
    "}\n",
    "r = requests.post(url=update_FaceSet_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [400]>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'time_used': 75,\n",
       " 'error_message': 'NEW_OUTER_ID_EXIST',\n",
       " 'request_id': '1648551708,8f0b975a-39ba-4ac3-b1c8-eb2d3ed4d5cd'}"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()   #上方r.json()已更新"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 增加人脸入数据集合"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 人脸检测（功能）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import detect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on module detect:\n",
      "\n",
      "NAME\n",
      "    detect\n",
      "\n",
      "FUNCTIONS\n",
      "    face_detect(API_key, API_sercret, image_path)\n",
      "        该函数为调用face++ face_detect接口\n",
      "\n",
      "FILE\n",
      "    f:\\桌面\\api\\week04\\detect.py\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(detect)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'request_id': '1648551733,57783fa8-afc3-45e4-8ca7-df2ef8da9cf6',\n",
       " 'time_used': 39,\n",
       " 'faces': [{'face_token': '96e22d9dfab64b4faacc8565f47becb1',\n",
       "   'face_rectangle': {'top': 98, 'left': 164, 'width': 118, 'height': 118}}],\n",
       " 'image_id': 'fwD9nHfTb9s3JIGwQOQmSA==',\n",
       " 'face_num': 1}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "detect.face_detect(API_KEY,API_S,'Liu_01.jpeg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b'\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00\\x01\\x00\\x01\\x00\\x00\\xff\\xdb\\x00C\\x00\\x0b\\t\\t\\x07\\t\\t\\x07\\t\\t\\t\\t\\x0b\\t\\t\\t\\t\\t\\t\\x0b\\t\\x0b\\x0b\\x0c\\x0b\\x0b\\x0b\\x0c\\r\\x10\\x0c\\x11\\x0e\\r\\x0e\\x0c\\x12\\x19\\x12%\\x1a\\x1d%\\x1d\\x19\\x1f\\x1c))\\x16%756\\x1a*2>-)0\\x19;!\\x13\\xff\\xdb\\x00C\\x01\\x07\\x08\\x08\\x0b\\t\\x0b\\x15\\x0b\\x0b\\x15,\\x1d\\x19\\x1d,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,\\xff\\xc0\\x00\\x11\\x08\\x014\\x01\\xc1\\x03\\x01\"\\x00\\x02\\x11\\x01\\x03\\x11\\x01\\xff\\xc4\\x00\\x1c\\x00\\x01\\x01\\x00\\x02\\x03\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04\\x05\\x02\\x03\\x06\\x07\\x08\\xff\\xc4\\x00C\\x10\\x00\\x01\\x04\\x01\\x02\\x04\\x04\\x03\\x05\\x06\\x05\\x02\\x04\\x07\\x00\\x00\\x01\\x00\\x02\\x03\\x11\\x04\\x12!\\x051AQ\\x13\"aq\\x062\\x81#\\x91\\xa1\\xb1\\xc1\\x143BR\\xd1\\xf0\\x15br\\x92\\xe1\\x07$\\x82\\x83\\xa2\\xf1\\x16%CSc\\xb2\\xc2\\xff\\xc4\\x00\\x1a\\x01\\x01\\x00\\x03\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x02\\x03\\x04\\x05\\x06\\xff\\xc4\\x00#\\x11\\x01\\x01\\x00\\x02\\x02\\x02\\x02\\x03\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x02\\x11\\x03!\\x121\\x04A\\x13\"Q2aB\\xff\\xda\\x00\\x0c\\x03\\x01\\x00\\x02\\x11\\x03\\x11\\x00?\\x00\\xf0a7QP\\xae\\xe77DD@\\xaa\\x88\\x82\\xa1Q\\x10\\x15Q\\x10T(\\x85\\r\\xa2\\xaa\"!Q\\x10\\xa2\\x04Q\\x11*QDAQ\\x11\\x01\\x116\\x1b\\xa0\"\\x84\\xb6\\xd9\\xcc\\xb9\\xee\\x0cc[e\\xeeq\\xe4\\x1a\\xd1\\xba\\xaf\\xf2\\x97\\xb0y\\x9d\\x1e\\xf3\\x01\\xbb#\\xaem{\\x86\\xd6\\x86\\x84Xre\\x83\\xf2\\xb8\\x8f1\\xa0\\x03h\\r\\xba\\xf3\\\\\\x1b\\x9d%\\x91\\xe1\\x07V\\xe4\\x87Q\\xa5\\x1b_\\xc2\\xb6\\n\\x8e\\xab\\x15\\xb9\\x91\\x10\\xdb\\x05\\xaewCU\\xfe\\xe5\\xdc$i\\xde\\x88\\xbeW\\xfdF\\xcae\\x8a\\xd9c\\xb0\\xa8\\xa5\\xda+*\"\"%A)eD@@Q\\x10[)j*\\x81h\\x88\\xa4\\x11\\x11\\x01\\x11D\\x04DP\\x08P\\xa8\\x80TT\\xa8\\x80\\xa2\\xa8\\x83\\x89ET*R\"\"%\\xcd\\x11\\x15\\x15\\x11\\x11\\x12\"\"\\x1bTDD\\x05\\x11\\x10\\x11\\x11\\x01\\x11\\x10\\x10\\xa2\\x14\\x11\\x11\\x10\\x11T(\\x08\\xa2\\x7f|\\xaf\\xefAO#\\xe8\\xb9>\\x19\\x9c#\\x81\\x80x\\xcf6\\xf1\\xb0s\\x06\\xd4\\xd7\\x17l\\x0f{\\xdbu\\xceG\\x8cX\\xa1v\\x92L\\x87P\\x14\\x1c\\xe7;\\xa1\\x00\\xf4\\x1c\\xeb\\xa9\\xae\\xcb\\r\\xf9R\\xe3\\xb6s\\xa9\\xbe<\\xaf;\\xd8xkO3\\xa8\\xf5\\xee{\\x9fEmii\\x19~<xlv6)l\\xf9n\\x0e\\x8e|\\x8b\\xd2\\x19\\x19\\xadp\\xe3\\x82E_\"\\xe3\\xb9]\\xb9\\x92\\xb0p\\xe3\\xe2\\x18\\x84\\x8fp\\xa8\\xe0akKF\\xc6\\x80$4\\x03c\\xb9\\xa2\\xb4\\x98\\xc6F\\xc9\\x1bE\\xea\\x96\\x9c@\\xa2\\xea\\xbf(\\x17\\xfcD\\xff\\x00{\\xac\\xfe&\\xd2\\xe9\\x99\\xc3\\xe1\\xd0\\xf7\\xe3\\x966g2\\x84fr<\\xf4F\\xe5\\xac\\xa2\\x1b\\xecJ\\x89cK\\x1a\\x80K\\xcf\\x96\\xb766\\x00\\x00:\\x90\\x81\\xda\\r\\xd0&\\xcd\\x9ec\\xee\\xe4\\xb6\\xee\\xc1\\x82(\\xf2\\xa7\\x86O\\x1a(\\xb2F#\\\\\\xd6\\x96x\\xa0P%\\x86\\xc9\\xa3\\xb9wk\\x03\\xaa\\xc1\\x18\\xcf\\x92A\\xafKL\\x929\\x8d\\x8d\\xa0\\x8d\\xef\\x90\\x07j\\xe7b\\xff\\x005K\\x8a\\xdb\\xdb\\x15\\xee\\x92B\\x1c\\xe3}\\x00\\xad\\xab\\xd2\\xb6\\\\\\xe3\\x93\\xc3 \\xb5\\xeff\\xfb\\x8eafdE\\x8f\\x0bKbi\\x90\\xef\\xf6\\x97Mqmj\\xa3\\xca\\x87\\xba\\xc3t\\xd7\\xa0=\\x8d\\xa6\\xf2\\xbb\\x03\\xee\\t\\xad\\x1b\\xdbc\\x16TO\\xa6\\xb9\\xe0;\\xa1;\\x03\\xee\\xbb\\xd6\\x89\\xc4\\x1d\\xc3CG:\\x05\\xdb\\xae\\xe8r\\xa6\\x88\\xf3%\\xbc\\xb4\\x12HS2R\\xe1\\xf7\\x1buWTS2f\\x877\\xa71\\xd9v+{ez\\xf6\\xaa\")\\x04DD*\" \"\"\\x02\"\\x88\\x08\\x88\\x89\\x11\\x11\\x01\\n!R!QR\\xa2\\x02\\x83\\xaa\\xa8\\x83\\x89EiB\\x11\"\"\"\\\\\\xd1\\x15TU\\x11R\\x88\"\\xe5J+h\\x04(\\xad\\xa8\\x80Q\\x11\\x01\\x11\\x10\\x11\\x11\\x00\\xa8\\xaa \\x8a\\xa2 !DD\\x0b\\x84\\x8f\\xd0\\xdeVI\\r\\x03\\xbd\\xae\\xc1\\xb9\\x03\\xd7\\xa2\\xc3\\xcas\\x9a\\xe6j\\xd8\\x06\\x97\\xf3\\xbe\\xa4Y\\xfb\\x95m_\\x18\\xe6d\\xf1re\\x9eO<x\\xc5\\xac\\x89\\x8d5\\xe2\\xca,F\\xd1\\xe8H.+\\x11\\xc5\\xd9\\x1362G\\x9eM$\\x80+r\\\\\\xf7\\n\\xfa\\x95\\xcao(\\xf0\\xda/\\xc2hs\\xeb\\xa4\\x92U\\xdf\\xb6\\xc3\\xe8\\xbaaqa{\\xc0\\x1a\\x83d`\\xff\\x00S\\xc1g\\xeaT\\xda\\xdaF\\xcf\\x17Lm\\x9b\\x88H\\x00,c\\xf2\\xe1i\\x1b\\xd3\\\\1\\xb1\\xc1\\xd5\\xd0\\xb8\\x93\\xff\\x00\\x96\\xba\\x98\\xed\\x18\\xe6r\\x0f\\xedO\\x8a[~\\xaas\\xe5\\xcdy\\x8c\\r\\xf6\\xbd\\x01\\xc7\\xff\\x00\\x12\\x99\\x12\\x97c\\xc7\\x19\\xd8<\\xe3F\\xda\\xe6\"\\x82=#\\xf17\\xf4\\\\q)\\xd3\\xe3\\xd0k\\x1b\\x13\\xa4\\xc8\\x07mN6\\xd6\\xb1\\xa7\\xda\\x82\\x0c\\xd9r\\xfc\\xb1Ft7\\x1f\\x026\\x87\\xc5\\x1b@\\x0e\\xc9\\x95\\xa5\\xba\\x07\\xb1\\xd4V\\xbe\"\\xf9\\xe6\\x98FI\\x92w\\x9f\\x03Yh\\ro\\x99\\xee|\\x80\\xec\\x05o\\xf4\\xf4\\\\\\x1a\\xff\\x00\\xb0 0\\x1b\\x98\\xce\\xfb7f\\xa9\\xb6;\\x0f\\xd5s\\x82\\x17\\x17\\xc9\\xafU\\xc8Y\\x13\\xa8\\xd3\\xb4\\xb8\\x17\\xbe\\xbdhW\\xd4(\\xd9\\xa7|\\xefi\\x8cH\\xc2\\xc1\\x04%\\xb0CM\\xf9\\x80\\x16d\\xedd\\xee\\x16\\x16\\xa6\\x17\\x8f\\x05\\x86\\x80\\xbdR\\x0bs\\x9d\\xd6\\xc7%\\x95?\\xdb\\xb2\\x16\\xb1\\xb4\\xc8\\x83\\xe4\\x94\\x0e\\xafu\\x0b?@\\x00>\\x8b\\xa4\\xc4\\xe0\\xd0\\x03\\x0e\\x92@\\xdfk$\\x1a\\xd2\\x07>\\xf6\\xa7{Dc\\xc9A\\xc5\\xbaE\\x92.\\xfa\\x11\\xd1t\\x9eg\\xf4Y>\\x13DbB\\xe1\\xbb\\x80\\xd2\\xd3G\\xdb\\xfeT{\\xc9\\xd2N\\x9ao\\x95\\xa04xm\\xf6\\xbeg\\xd5B\\xce\\xb6I4N\\x0ek\\x8bM\\n\\xbeD-\\x966Se\\x01\\xae\\xa1\\'a\\xc8\\x8fE\\xaf1\\xbaBK[\\xbd\\xf2\\xd3\\xa7\\xea\\xba\\xc1sN\\xc6\\x88;\\x0e\\xc7\\xddF\\xf4\\x8b7\\x1b\\xe2\\xa2\\xc7\\xc6\\xc8l\\xcd\\r&\\xa4\\x15c\\xbf\\xaa\\xc9\\xdb\\xa2\\xd2v\\xe7\\xb3H\\x88\\x8aP\\xa8\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\xa2\\xa8\\x82\"\"\\x01QR\\xa2\\x94\\x88Q\\n\\x08\\x88\\x88\\n\\x14P\\xa0\"\"\\x0e\\xc4DT\\x04DR\\x81\\x11\\x10\\x11\\x11BDD@DD\\x04D@DD\\x04D@\\\\^\\xe2\\xc6\\x97\\n\\xb1\\xd3\\xba\\xe4\\xba\\xa7\\x02A\\xe1\\x07\\rE\\xc2\\xc5\\xeeG\\xa2\\x8c\\xae\\xa2d\\xdd\\x04\\xb1\\x12\\xe6\\x97[\\x80\\xba\\x00\\xf3\\xea\\x16\\x1eK\\xcb\\x89u\\x80\\x0b\\xae\\x85\\xf3h\\xd9w3\\x1c\\xea\\x009\\xad{M\\x16\\x10C\\x8d\\xf5\\xb5\\xd5\\x92\\xd75\\xc5\\xa4\\x83@r\\xaa\\xec\\xb1\\x97\\x7fn\\x9f\\x1dGN\\xb7\\xe9\\x91\\xb7\\xe5y\\xf3\\x0e\\xf4I\\\\t\\x9d\\xe8\\x11g\\xf4]\\xb0\\xc2\\xf9\\\\\\x18\\xd1vW\\xa6\\xe1\\xbf\\x0e\\xbf$\\x07\\x1b\\x07I\\xad\\xb6\\xba<\\xd4\\xe5\\x9c\\x89\\x98\\xee\\xf4\\xf3lk\\xe4>k\\xf9t\\xb3\\xde\\x80\\xe6\\xbb\\xab\\xc3\\x83\\xc2h\\xb9&s|GW \\xdeM\\x07\\xef^\\xbf\\xff\\x00\\x86\\xdf\\x8f\\xe0\\x90\\xd7\\x16\\xb4Y#\\x99$oj`p\\x11+&\\xd5\\xa8;\\xc5!\\x80\\xb0P\\xde\\xfa\\xaa\\xfeX\\xbd\\xe2\\xcb\\xf8\\xf2\\xd8\\xb8\\x8e|\\x9e\\x1b\\x81\\x00\\xb86\\xba\\xd9\\xe4\\x16\\xc8p\\xec\\xa0\\xf7\\x86\\xc6\\xe3\\xe29\\xcee\\x9e\\xb4\\x19A{\\xdc^\\x01\\x86\\xc6\\xea{H$\\x8d@\\x06\\x8buU\\xee\\xb6L\\xc0\\xc5\\x8d\\xa1\\xba5i\"\\x8b\\xb9\\x829,\\xef4\\x95lx2\\xaf\\x03\\x1f\\x06\\x92,g\\x16F\\xe2ec\\\\X\\xe1\\xbe\\xa8\\xcd\\xd1\\xa5\\xac\\x97\\x86\\xe6k#!\\x8ex\\x8c\\x06i$\\xe8\\x05\\xd4\\x03[~\\xc7\\xee_St, \\xdb@\\xfa_\\xdc\\xb0d\\xe1\\xd0k{\\xf4\\xb4\\x92\\xe2\\xf1w\\xb3\\xc8\\r\\xb5O\\xcc\\xd2\\xfcz\\xf9o\\xf8c\\x8c\\x19\\x12\\xba\\x83a\\x90\\xb20/\\xcc\\xfd\\xec\\x12\\xb1%\\x82\\x7f!-,n\\x92\\x01\\xad\\xc0\\xb3t{\\xaf\\xa6\\xcf\\xc2\\xd8\\x18\\xc6ig\\x84\\x1edph\\xdc\\x93\\xb5\\xadV_\\t\\x85\\xedq\\r\\x1byZh\\xd8\\xa1\\xecV\\x98s3\\xcb\\x86\\xce\\xdf>%\\xe4\\x067\\xc4\\xa7\\x1b\\xf0\\xc5\\xef]]\\xea\\xab\\xe0\\x02=v\\x1a\\xe6\\xd6\\xa0\\xeet}\\x89[l\\xbcF\\xc4\\xe7\\x02$\\xb1\\xb5rf\\x9e\\xb6I\\xbe\\xdd\\x07\\xf4\\xc2h\\xb7\\x80\\x1e#k9\\xbeB\\x03A\\x1c\\xabU\\x9f\\xc1o/\\x93\\x0b\\xb9X\\x00\\xbe7\\xb4\\x8b\\x07\\x98;\\xda\\xdacd\\t\\xc1\\x07\\xcb#~a\\xdcwXs\\xc13\\x9d\\xad\\x8c\\xc8\\x91\\xb5\\xbc\\xaec\\xa8\\x9e\\xb4E\\x85\\xd3\\x0c\\x86)\\x1a\\xed\\xfc\\xa7\\xcc\\x0fn\\xaaU\\xb2e\\x1b\\xa4F\\xb9\\xaek\\\\\\xd3mp\\xb1\\xec\\xaa\\xd5\\xcf\\xe8DD@\\x8a\\x84(\"\" \" \\xea\\x80\\x89hJ%\\x10\\xa2\\x1aA\\x10\\xa7\\xb2\\x15)DDA\\x14*\\xa8P\\x11\\x11\\x07b*\\xa2\\x84\\x08\\x8a\\xa0\"\"\\x02\"\\xa1\\x04EP\\xa0\\x8a*\\x8a\\x04EQ\\x04EQ\\x04EQ\\x10-na\\xd3&\\xa0\\xef9v\\xfc\\xc5\\x06\\x80\\x06\\xebbv\\x04\\xf6\\x04\\xfdF\\xebR\\xe6\\xbeG]\\xd0\\xbd\\xcb\\xb9\\x05L\\xdbq\\xb2\\xb1\\xe5\\x17\\xa8\\x82\\\\G3\\xb8\\xb5\\xc9\\xb0\\xbay@\\x1b\\x97;\\xd9u\\xc1\\x1ct\\xe6\\xf9\\x9c\\xeew\\x7f\\x90\\xe6\\xb7\\xdc\\'\\x13\\xce\\xc79\\xbf1\\xdbj\\xd9a\\x9f\\xea\\xe9\\xc2yV\\xc7\\x84pX\\x98[#\\xf7p\\x1fO\\xaa\\xf5\\xf8\\xd1\\x86\\xb04\\x00*\\xb9r\\xafe\\x83\\x88\\xd0\\xdd;\\x00:-\\xbcb\\xe8\\xd7;\\xe4\\xb8\\xf2\\xb6\\xd7\\xa3\\x8e\\x13\\x05\\xab\\xd3w\\xe9\\xec\\xb9\\xc5\\x13X\\xebh\\xab\\xb2W \\xcb<\\xf9P]\\xedh\\xe4\\x15Zt\\x02\\x00\\xbbP\\x90z.e\\xbb*\\xd8\\xef\\xd7\\xd1\\x0e\\x9d@m\\xc9u\\xb8zwYf:\\x07\\xa7\\xa1].h\\xbd\\xfbtM\\x1b\\x8c\\t\\x06\\xd5Wv\\xb1\\x1f\\x11\\xd0t\\x9e\\x9c\\x87>{\\xad\\x8c\\xcc5}\\xd7CE_\\xe8\\xa3\\xd2/\\xa7\\x94\\xe2\\xd8\\xe03Y\\x88\\xb9\\xbb\\x876\\xc5\\x0b\\xeb\\xba\\xf2Y\\x8c\\x8a9\\x1b$14\\x16\\xb6\\x9e\\xd9#k\\x99\\x7f\\xcd\\xb9#\\xf0_B\\xe2L!\\xb2\\n\\x0ei\\xdf\\x97\\x98\\x11\\xfd\\xf2^#9\\x8el\\xba\\x9b\\xe4\\'V\\xa2\\xc2(\\xea\\x1c\\xeb\\x95w\\x0b\\xb7\\x8b\\'\\x9f\\xcb\\x8fmpkK>\\xd1\\x8d.6\\xe6?S\\xcb\\x05\\x7f)k\\xc3>\\xf0\\xb0\\xfc)$qla\\xaev\\xe4\\n\\x1a\\xbb\\xdd\\xff\\x00\\xca\\xef{\\xa5\\xc6s\\x80c@p\\xf3W\\'\\x0ev\\x03Tl\\x85\\xc5\\x924\\x86\\xb7]\\x90<\\x80?\\xae\\x977k\\xf6]3\\xb7/\\xa7n\\x13\\xce\\x97B\\xef\\x9a7X\\xf6+)c1\\xa3\\xc6\\xf1\\x05\\xf9\\x87\\x9bj\\xdf\\xd7\\xad\\xac\\xa3]\\x15\\xe3\\x1c\\x91U\\x15V\\xd2\\x82\\xa1EB\\x90**\\x85\\x04DQ\\x01\\x11\\x11\"\\x14*(\\x04(\\x8aR\\x88\\xa9Q\\x04P\\xaeJ \\x88\\xaa(\\x1d\\x88\\x88\\x88\\x11\\x11\\x01P\\xa2Z\\x81QKD\\x15\\n\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\x88\\x88\\x08\\x88\\x81\\xd0\\xfa\\xec\\xb5\\xf3\\xb5\\xcd 8\\xd4vtV\\x90l\\xf3\\xfd\\x16\\xc3u\\x89\\x98\\xd1\\xf6N\\xb0<\\xd5\\xb8\\xdb\\xa2\\x8a\\xbe\\x17\\xbd9\\xe0D\\xe7L\\xc1D\\n\\xdc\\xd7E\\xec\\xb1\\xa3k\\x0b@\\xe4\\xd0\\x00\\xdb\\xaa\\xf3\\xdc1\\xa4\\xe9$\\xee\\xe3n<\\x85\\x0eA\\xab\\xd2\\xc0\\x0e\\xa8\\xcf\\xf3:\\xf9\\xf4\\\\\\\\\\xbe\\xde\\x97\\x04\\xebm\\xbcV\\x03\\x01\\xec\\xb6\\x90\\x9f+V\\xb6-\\xcd\\xd1\\xaa\\xd9g0\\xb4\\x06\\xef\\xd1q\\xbb\\x99\\xf1\\xb4=d\\x86\\x82\\x00Xp\\xc9\\xa6\\x89\\xfa,\\x96\\xbfU\\x9f\\xd6\\x95\\xe7\\xa5l]#pN\\xc0\\xee\\xb2\\x18\\xd6\\x1eC\\xa5\\xf4\\xe9\\xbfE\\x8a^7\\xaa\\xe5\\xbe\\xea2r6\\xb3aZX\\xad\\xc6\\xb2\\xa5\\x14F\\xdd?5\\x8d \\xa3\\xe8\\xaf\\xed\\x1b\\xee\\n\\xea|\\xac:\\xafa\\xea\\x15r\\xef\\xd2d\\xb1\\xc1\\xe4\\n\\xb1d\\xed\\xf4X\\xfe\\x1dj\\x1a{\\x91\\xda\\x97qs^<\\xae\\x06\\xb7\\x1e\\x88N\\xc2\\x8f\\xca7\\xfe\\xa9\\xad\\x95\\xa4\\xe21k\\x14]A\\xd6\\x07.u\\xc8\\xaf)\\x97\\x0e\\x9de\\xf4H;\\xec9U/m\\x90\\xd6\\xbfM\\x8b\\x1d~\\xabI\\xc4\\xb0\\xc9i\\xe4ElG:\\xecU\\xf0\\xcb]1\\xe4\\xc3}\\xbcfd,s_\\xa4\\x02\\x1c\\x01\\xba\\xbeAi>G\\x11g\\xf0\\xa5\\xe82X\\xe8\\xc6\\x92\\x08v\\xfc\\xd6\\x9ah\\xddgc]@]\\x98W\\x16SU\\x97\\x8e\\xd2#i$\\xd3\\xb7\\x17K\\xbduD\\x08\\x8a+ \\x9d=\\x17j\\xe9\\x9e\\x9cy{\\x00T\\x84\\x0b\\x90\\xe4\\xa5G\\nEJ\\x88\\x91P\\xa2 \\xa5DDAIJ\\x85Q.\\x08U* \\x88\\xaa\\x14J\\x15\\x15Q\\x01ET@DD\\x1d\\x88\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\x88\\x88\\x08\\x88\\x80\\xbag\\xd1\\xa5\\x85\\xc4\\x80\\x1e9\\x0f6\\xff\\x00\\xcb\\xea\\xbb\\x97\\\\\\xb6\\x1b\\xb7;\\xfd\\n\\x8b\\xe98\\xfbep\\xe7\\xbaI\\x99`\\x00\\xd2\\x05_\\xca/`\\xbd\\x8b\\x18\\x1a\\xd8j\\xae\\xaf\\xf1^?\\x85\\x9a\\x8c\\xb8\\x7f5\\x95\\xba\\x7f\\x15t\\x92\\x18\\xa2-dq46G\\x7f\\x13\\x8d|\\xb6\\xb82\\x9eU\\xebaf\\x18\\xbd\\x1cO\\xd8\\x8a\\xb2\\xb3\\xa2m\\xe9\\xb2\\x07+\\x1a\\xbf\\r\\xd7\\x90t\\xd9\\x9a\\x1a\\xe8\\xdd\\xa6=\\xb9\\x92F\\xfe\\xab\\xbe\\t\\'e\\x1do.\\xb1\\xe5q\\x1aA\\xf5U\\xfc3\\xdd^sw\\xad=\\xce<\\x06N\\xa0\\xdfn`\\x05\\x92\\xecgD6\\xf4>\\xabW\\xc2x\\x83\\x83@ \\x13Tw\\x16\\xd3\\xea\\x16\\xe4\\xe56QZ\\xac\\xb8\\xd5\\x93\\xdb\\xd1G\\x86>\\x97\\xb9\\xe5oL \\xd0\\\\\\xeb m\\xd7\\x9fuuF\\xc8\\x9e\\xe0\\x1a*\\xcf\\x98\\xee}\\x12g5\\x8e}V\\xe0\\xb7\\xfb+]$\\xa0\\xfc\\xe6\\xc1\\xd8\\x8f\\xc91\\x92^\\xd3\\xc9\\xbb\\xfe\\\\\\xe7\\xca\\xc9`v\\x8d%\\xa2\\x9a\\xda\\x03S\\xc9\\x00\\x93\\xb8Xo\\xccy.\\xf1%`p\\x16\\xe0\\x1b\\xf2\\n\\xebAf\\xc4\\xc6?Hyv\\x93\\xb5u\\xa5\\xb0\\x87\\x1b\\x06\\x8e\\x8chh\\x9bq{C\\x89=.\\xd6\\x92\\xe1\\\\\\xd7\\x0c\\xdeJ\\\\\\x99\\x05\\xe9\\x92\\x9c\\x05\\xd8p\\xdc\\x9e\\xb4\\xb20x\\xa9\\x91\\xc2\\t\\xdc5\\xf2\\x0e\\x1c\\x8d\\xad\\xe6L\\x18\\xef\\xd4\\x0cq\\x9e\\xc3KAZL\\x9e\\x1f\\x8e\\xe7\\x07\\xb4\\x18\\xdc\\x03\\xb4\\x90\\xb3\\xb7\\x1fZk1\\xca}\\xb3\\x9dd\\xb8\\x03{\\n\\x1d:\\xac\\\\\\x96\\x17\\xb5\\xec=[\\xcb\\xd5!\\xf1c\\xf0\\x9a\\xf2Ml\\r\\xd6\\xed\\x02\\xbf5f$\\xbc\\x8d\\xac\\r\\x96_}6\\xd6\\xe7o\\r\\xc5YO\\x90^\\xc3s\\xfd\\x16\\xa9\\xfa\\\\\\x00\\x15\\xa8\\xed\\xa8\\x1d\\xc8\\xfeR\\xb7\\x1cT\\x8f\\xda&\\x04\\x93\\xa4\\x93~\\x84U-\\\\8\\xd9ysE\\x06+5\\xca\\xe7\\xd3Z;_3\\xff\\x00\\xb2\\xed\\xc2\\xeb\\xba\\xf3\\xb2\\xc2\\xe5\\xe9\\x00\\x00\\x006\\x03j\\xbeJ\\xafZ\\xcf\\x83\\xe2\\xc5\\xc5~g\\x17\\xe2-\\x81\\x91\\x8b\\x7f\\x84\\x00`\\xff\\x00.\\xa7\\x83g\\x97 \\xb5\\x19\\\\&\\x01\\x04\\x99|;-\\xd9x\\xf1\\xd7\\x8c\\xc9\\x18\\xe8\\xe7\\x84r\\xf1\\x1c\\xd2\\x00-\\xfa-g.\\x17\\xad\\xb0\\xcb\\xe3rIr\\xd3Uj\\x82\\xa5\\x01\\xd9\\x16\\xfar\\xcf\\xfa\\x14DD\\x88\\x88\\x82\\x84\\xa5\\x15\\x08\\x14\\x85\\x10\\xa9\\x11EU\\x088\\xa2\\xe5J\\x10\\x9a\\x10\\xa8\\xaa&\\x87\\x12\\x11R\\xa2\\x84\\xa2*\\x88;\\x02\\x14\\x08T\\x88\\x88\\x88\\x08\\x88\\x82\\x84*\"\\x80T(\\xa8@**\\x85\\x04QU\\x10\\x11\\x11@+j\"\\x0bk\\xaa}\\xd9\\xe9`\\x9fe\\xd8.\\xc0\\xef\\xff\\x00\\xb2\\xdddb\\xf0&p[\\x85\\xbe6d\\x8f`vI\\xc8\\x7f\\xd9\\x10Ap1\\x8f/+Y\\xf2g1\\xe9\\xb7\\x17\\x1eY\\xcf)\\xf4\\xd5p\\xf2\\x04\\x19}4\\xb5\\xceo\\xf4[\\xae\\x03\\x85\\x0b\\xb4\\xc9+u\\xbc\\x12\\xf2\\x1c-\\xad}\\x9e\\x8bU\\x82\\xc0\\xf3\\x90\\xd6l\\x0bZ\\x08&\\xbbP\\xfb\\x96\\xce,\\xcf\\xf0\\xe8e\\x91\\xa0\\xcc\\xe0O\\x94j\\xa6\\x10H&W\\x01\\xb0\\x0b\\x97>\\xad\\xd3\\xbf\\x8f\\xb96\\xf7\\x90E\\x03\\x83#,\\x06\\xb9y\\x7f \\xb8\\xe4\\xf0|YI.n\\x87s\\x0e`\\xa7\\x0fu\\xf3\\xe9&\\xf8\\xcb\\x88\\xc2g\\x82L\\xa1\\x1b\\xdd\\xe4\\x82\\x02\"\\xb1[86\\xc1\\xae]V\\xd3\\x83p\\xdf\\x89div[g\\xc7\\r\\x8d\\xe5\\xaf\\x9aY$\\x92i\\x83\\xf64\\xc9\\x03\\x80\\xad\\x81\\x04\\xf2\\xfb\\xe9\\x8e9Y\\xdb[f\\xe4\\x91\\xb9\\x93\\x0f3\\x05\\xda\\xe1se\\x8d\\xa4\\x9d\\xafU.\\xdc\\x1e##\\xe6k7\\xd5\\xa8\\x12\\t;\\x05\\x91\\x82\\xde+\\xa9\\x90\\xe6\\xc6$c\\x89kg\\x89\\xc0\\x86\\x1e\\xd2\\x87\\x00k\\x9e\\xeb\\xa5\\xf8\\xb13\\x8aTdSn\\xc8\\x14\\x0e\\xc3zY\\xe5\\xd3\\xa6ut\\xdc\\xe6Ga\\xc6\\xf7\\xa0A\\xae\\xebQ!|.n\\xbb%\\xdc\\x88\\xde\\xfd\\x16\\xe2{t \\x9ezh\\xae\\x97\\xc3\\xe3B\\xc7\\xb5\\xa5\\xcek\\\\|\\xbf?A\\xe5<\\xedW.\\xeag\\xa8\\xd0\\xe7qwb\\xde\\x96\\x80\\xe6\\x82]\\xaa\\xdc\\xed\\xb7\\xa6\\xc6\\xc2\\t\\xfe\\xfb\\xaf;\\x1f\\xc7\\x1c\\\\\\xbd\\xed\\xc5\\xb3r5\\x8cac/\\xceH\\xd5\\xf6B\\x87\\xd6\\xff\\x00\\xaf\\xad\\x83\\x1b\\x87\\x97\\xb8\\x88\\xda\\xd7\\x0f+\\xcb\\xc5\\xbc\\x1e\\xce$^\\xebk\\x038n;N\\x862\\xc8\\xdf\\xc3k*\\xc7+\\xa0\\xb5\\xe3\\x98\\xcfl\\xf9q\\xcb\\xff\\x00/5/\\x19\\xe2\\xd8\\xd3I\\x1e{\\x0e\\xb1\\xe6\\x0fc\\x0c\\xf0\\x10w\\xfd\\xe4\\x03\\xc4\\x1f\\xedYQ\\xf1\\x18r\"\\x129\\xad\\x00\\xd7\\x86\\x04\\xacqq?\\xca\\xc6\\xf9\\xff\\x00\\xf4\\xad\\xa4\\xb3cL\\xe2\\xc8\\xe3\\xd6\\xf3^V\\xb6\\xeb\\xde\\x85RE\\xc3\\xf4\\xbb\\xc4{\\x1b\\xac\\xf2/n\\xed\\x1d\\x81\\x05e\\x96\\xb7\\xb8\\x99\\xb95XR6G\\xc7\\x1c\\x81\\xa7j$\\x96\\xe9h\\x1e\\x81\\xdb\\xfe\\x0b\\xa6G\\x03\\xa5\\xd7\\xd7~\\xdb-\\xa4\\xb1\\xd8-:\\x85\\xd8\\x17\\xe6i\\x1e\\x97\\xba\\xd5H4\\xb9\\xec\"\\x87-\\x95V\\x9e\\x9e/\\xe2\\rm\\xcbqh\\xf9\\xda;Q#\\x9f\\xe8\\xbd\\x1f\\xc2\\x10b\\xe1\\xe2dql\\x86\\x97\\x17\\x11\\xa41\\xa5\\xce\\xd2\\xc0F\\x96\\x0e\\xa4\\xdf/\\xe8\\xb4\\xbcr\\x03%9\\xa2\\xcb6\\xaf}\\xa9z\\xbe\\x12qZ8S\\x1etb\\xb5\\xedym\\xf9_3\\x98_\\xa4\\x05\\xb6W\\xf4\\x8e|1\\xfd\\xed\\x8d\\x9c\\\\.n&\\xd3\\xc58\\xa3\\x1d\\xe5\\xf3a\\xe1\\x1bt8\\x91\\x93\\xb3\\x9c\\xdeE\\xe7k+\\xa2\\\\8\\xa4{4\\xb7H\\x95\\xae\\x89\\xc4W\\xca\\xebii\\xa5\\xeaD\\xf0\\x9ci\\x83I.|z{\\x0e\\xf6\\x16\\x9a\\x06\\xb5\\xed\\x1a\\xb9\\xb3%\\xc0\\xfb\\x00\\\\\\xab\\xa9\\x1d\\x1cv\\xdf)_!\\x91\\x869%\\x8fo\\xb3{\\xe3\\xdb\\xfc\\xa4\\x85\\xc5we\\xb8;+1\\xc3\\x93\\xb2\\'p\\xf6/%t/W\\x1e\\xe4|\\xf6\\x7f\\xea\\xe9QDVTDU\\x10*\\x10\"\\x1b\\n\\x8a\\x95\\x10P\\x88\\x12\\xd5\\x86D\\x10\\xf8\\xa4\\x05\\xb0<1\\x85\\x96\\x0e\\xeb\\x0f\\x12f\\xb1\\xcd\\xb5\\xba\\x19\\x10\\x96|\\xc0\\xd8D4\\x12\\xe3>3]7]\\x05\\xb4\\xb6\\xb9\\x0fk\\x89\\xaa\\xea\\xb0\\x1e\\x05\\x94C\\x1a\\x94+\\xb4\\x81\\xba\\xe0Bi;qEi\\x14%Q\\x02(H\\x88\\x88*(\\x88*(\\x88*(\\x88**\\xb8\\xa0\"*\\x82\"\"\\x80DE!dQ\\x02\\xc8 \\xfdF\\xeb#\\x88a\\xf8\\x0fd\\xd0\\xeb\\xfd\\x9726J\\xdeto\\xe6\\x07\\xebk\\x1dl?i3p\\x97\\xe3\\xbbN\\xacW\\xf9/\\x9f\\x87!\\xa2\\x07\\xe0\\xb9\\xb9\\xb1\\xeaW\\x7f\\xc2\\xe4\\xd5\\xb8\\x7fS\\x82\\xb3\\xc5\\xca--ic\\x9e\\xe2\\xedW\\xa5\\xad\\x15\\xb1^\\x97\\xfc.8\\x8b\\x9f\\x14V\\xf7\\xc8%\\xf0!is\\x9d]\\x83\\xc9mwZo\\x87\\x03H\\xc8\\x9c\\xed\\xa5\\xce`\\xbf\\xe6u\\x1b\\xfa/e\\x85WM\\xbd\\xfec\\xd4\\x9fU\\xc9\\xc9{vqc\\xfa\\xb0\\x99\\x9b4\\x004\\xe2d\\xb3O-p=\\xa0\\x1e\\xd6\\xee\\x8b2\\x1e+\\x91!k\\x19\\x1c\\x85\\xc6\\x85\\x01_\\x9a\\xdeF\\xc0Z\\xd1\\xa6\\xc7\\xafOUec#\\xad\\x85sT\\x9b\\xf6\\xe9\\xdc\\x9di\\x8e\\xd9g\\xf0\\xcc\\xb3\\xba\\x80\\x16\\x18\\x00\\x00t$\\xd2\\xd4cK\\xe2gM-\\xde\\xc5\\x8d\\xbe\\xa0,\\x8e#\\x92\\xf2\\xd2\\xc0i\\xbb\\xfd\\xd4\\xb18k\\x0b\\x8b\\xde,\\x02h*\\xdbjf-\\xdb\\xdc\\xe3\\x18\\xd4(\\x11K\\x8cR\\x18H\\xaf\\x97\\xea\\xb9H\\xd7\\x86\\x01\\xd2\\x82\\xc7k\\xf7\\xa3\\xd3\\xba\\x8c\\xbd\\xad\\xa6FF/\\x0e\\xca\\xd3$\\xd1S\\x8f\\xff\\x00V\"X\\xeb\\xf7i\\xb5\\x888f\\x08\\xd2I\\x99\\xc3V\\xc2I\\xa4w\\xe0J\\xcdc\\xf1\\xd8\\x087\\xbd\\x13\\xd4*C\\x1c\\x01c\\x83\\x81\\xea?Uk6\\x8d\\xe9\\xca\\x08\\xd8\\xc0\\xd6\\xc6\\xc6\\xb5\\xa3\\xb0\\x01vH(\\x1b;\\x15\\xd9\\x8c\\xcd\\xda\\t\\x15\\xf4\\xe4\\xa6V\\x90KZEt\\xe4\\xa7VFv\\xcbZ\\xe9\\x1e\\x01#\\xa2\\xd4\\xe6\\xb4\\xd1p\\xe9\\xc8\\xf7[\\x19\\xc8\\xb3f\\xa9k\\xf2\\\\\\x0cN\\x07\\x9e\\xeb(\\xb6\\x9a\\x1c\\x96\\tX\\xe0.\\xdf\\xa4\\x9a\\xf7^\\xa7\\x07\\x84b\\xe4\\xe3\\x13#nF2<\\x8cR\\t\\xf2\\xc8\\xdedW\\xd1y\\x80I\\xd2,\\x0bu~+\\xdcp\\xa9#f.%\\x91\\xe5\\x8b\\xcaE\\xdb\\x9c\\xe7t\\xa5\\xab+\\xd2\\xb0\\xca\\xc0\\xd6\\xb8\\x91\\xb8\\xe7{\\xfa\\xae\\x9c\\xa9c\\xc3\\x83\\x8c\\xcc\\x0f\\x96\\x06M)\\xff\\x00Q\\x81\\xa3\\xf5Y\\xf3T\\xd3\\r\\x04xcr\\xe2\\x08\\r\\xef~\\xcb\\xca|[\\xc4X\\xce\\x1d\\x96\\xd8\\xf9\\xf1,\\xc3\\x1cG\\xf9\\xa2\\x86\\x9c\\xe7\\x0fCB\\x95\\xb0\\xc7yHg\\x9d\\x98Z\\xf9\\xed\\x93\\xb9\\xe6w\\xfb\\xf7Q=;l\\x8b\\xd5x;\\xd8\\x88\\xaa!\\x15DR\\x91\\x15\\x08QTDD\\x05B\\x8a\\x84\\x0f\\xaa\\xe4\\x1e\\xf1\\xd4\\xae$\\xa9jP\\xec2;\\xa9+\\x89y+\\x8a \\xe5\\xa8\\x15\\xc6\\xc2\\x88Q*\\x8b\\x8a(4\\xbb\\xa2\"\\x88\\xb0TT\\xa8\\x80\\xaa\\x88\\x88TD@DD\\x04D(\\x08\\x88\\x80\\x88\\x88\\x08\\x88\\x80T\\xb26\\xbd\\x8d\\x03\\xf7\\xaa\\x8a\\xb9M\\xcd-\\x86^9J\\xdc\\xf0\\xc76\\x08\\x9a\\xc68\\x90ey?Z+\\xda\\xf0\\xed:\\x1a{\\x8b_9\\xc3\\xc8,%\\xa7\\xf8e\\xbf\\xbe\\x97\\xbb\\xe1\\xf9-\\xd0\\xcd\\xf9\\xd2\\xf39&\\x9e\\xef\\x0e^]\\xbdLO\\xa6\\xfd\\x07\\xb2\\xe8\\xca\\x9e6\\x02\\xf7t\\x1b\\x0b\\xd8\\xfa,\\'\\xe5\\xb5\\x8c\\xe7\\xd1`H\\xe9\\xa7\\xf39\\xd4\\xcb\\xf2\\x8d\\xec\\x81\\xd5Ve\\xd6\\x9b\\xe3\\x8f{c\\xe4\\xe4\\x0c\\x87\\xcd\\xd9\\xa5\\xcc\\x02\\xee\\xaf\\xa2\\xcd\\xe1-\\r\\x8e6\\xf7\\xdb\\xee+\\xc5gqL\\xbe\\x19\\x93\\x97\\x1b\\xa1s\\x98\\xe9]$F\\x9c\\x18\\xe6\\x1f_E\\xb7\\xf8s\\xe2,i\\xc9\\x86R\"\\x95\\xa4\\x90\\x1cn\\xfd\\x8a\\x9f\\x1e\\x95\\xdfz{\\xb9\\xda\\xe1\\x0cd\\xb6\\x9a\\xeeEk\\xf4\\xb4\\xd9\\xbb\\x1b\\xfd\\xe1aq\\x0e9\\x14X\\xee\\x0f\\x90\\x9f\\x0cyX\\xd3ns\\x8f&\\xb5\\xbd\\xcfE\\xa5\\x18?\\x19\\xe7\\x96\\xcb/\\x10g\\x0e\\x85\\xe0\\x18\\xf1\\xa3h{\\xc3\\x0e\\xe0H\\xe3\\xd4\\xf5\\x16\\xa7\\xc7\\xc9\\x13s\\xaa\\xf4\\x1a\\xdcra\\x8d\\x80\\x1dZ\\x8b\\x85X\\xd2\\x06\\xe4\\xae\\x19\\x02lw\\x19\\xa1\\xd5\\xa0\\x1f\\xb4`\\xfc\\xc2\\xe3\\xc3\\xb0\\xa4\\xc3l\\xb2O\\x97.^T\\xc01\\xd2\\xc8\\xd6\\xb01\\xa3\\xf8X\\xc6\\xf2\\x1fU\\x9c\\xd7\\xb7\\xcc*\\xfa\\xddm\\xbakKn\\x7f]x\\xfcC\\xc4h\\xa2/a\\xb7e\\xdc\\xe9\\xecnV\\xaf+\\x05\\xedy\\x9b\\x0e\\xda\\xef\\x99\\xf1\\x9f\\x91\\xc7\\xbb}W\\x06L\\xf24\\xbc\\x16\\xb8\\r\\xc3\\xb9\\xdf\\xba\\xa6[OU\\x91\\x91(7\\xbf-\\xedaH\\xe2\\xe0\\xe6\\xdf1G\\xd7\\xb2\\xecx.\\xa0\\x0f5\\x1d\\x1e\\x90\\x0fQD\\xfd\\n\\xcc\\xadF\\x8f3\\xb6\\xdc8\\x10W\\xb1\\xe1\\x98\\xe1\\xf0C+\\xcdS\\x18\\x18=(R\\xf2/\\xfd\\xf4\\x83\\xfc\\xdd\\xb9\\xee\\xbd_\\x01\\xce\\x87/\\x02\\t\\x03\\x86\\xa8\\xcc\\x90\\xc8/\\x93\\x98\\xe2)k\\xf4\\xc7\\xed\\xdf;_#\\x9d\\x03\\xdf\\xa6\\'\\x12\\xf7\\xb5\\xbb\\x17\\xf2\\x14On\\xeb\\xe6\\x9f\\x11q&\\xf1\\x0e \\xf1\\x10\\xd3\\x8d\\x86?e\\xc7h64\\xb0\\xd1x>\\xbf\\xa2\\xf6\\x7f\\x13\\xe7\\xb7\\x17\\x0eg\\xc7 l\\xcf\\x1e\\x0cB\\xf7v\\xbd\\x8d/\\x99\\xae\\xbf\\x8f\\x87\\xdb\\x87\\xe6g\\xe3\\'\\x1e\"\"\\xab\\xb1\\xe6\\x08\\x88\\xa4\\x15\\x08\\x11\\x01\\x11\\x10\\x11TA\\n\\x8a\\xa1R\"\" \\x88\\x88\\xa0\\xd0\\x85\\n\\x88\\x91\\x11\\x11\"\\xaa\"\\x88*(\\xaa (\\x85D\\x15\\x11\\x10\\x11\\x11\\x01\\x0f$B\\x809\"\\x88\\x82\\x95\\x11\\x14\\x02\"(\\x04D\\xec\\x81\\x1e\\xf2H7\\xd9\\x81\\xdf@@?\\x9a\\xf4X93FDn&\\xc1^z\\x0b\\x191\\x8a\\xb6\\xca\\x1d\\x0b\\xbf\\xf3\\x06\\x90\\xbd#b?\\xb3be\\x80)\\xd1\\x8f\\x12\\xba9\\x87K\\x8f\\xe4\\xb89\\xb7+\\xd7\\xf8\\xf9I:n\"\\x92Y\\x0bH\\x07\\xea\\x17l\\xb2\\xbc\\n\\xe5\\xb7:\\\\\\xe1-dpL\\xdd\\xda\\xf1\\xa4\\x9fq\\xcd`e\\xce\\xf6\\x93\\xa5\\xc6\\x9a\\xe3@\\xefk\\x9f\\x18\\xec\\xbc\\x9ad\\xb4x\\xd1\\x96\\xbe6\\xc9\\xe5\\xa3\\xaa\\x8f?E\\xe7s\\xfe\\x19\\xca|\\xed\\xc8\\xe1\\x85\\xb1\\xc8]\\xf2\\x13\\xa0\\x03\\xe9_\\xd1m\\xe0\\xcb\\x81\\x80\\xbaIZ\\xc27%\\xce\\x02\\xbd(\\xae\\xf8\\xf8\\xe7\\x08c\\x87\\xdbkx\\xde\\xc5}\\xcbM\\xe9N\\xf2tp\\xbf\\x87\\xf3\\xa0\\x9a,\\x9e\\'\\x92\\xdc\\x89\\xd8A\\x8e(\\xc1\\x111\\xdd\\xcb\\xba\\x9f\\xa2\\xf6-\\x84\\x06[\\xb9\\xd5y\\x8f\\xe4\\xb4\\x1f\\xe3\\xf8/\\xd2[\\xbb\\xacP\\xbe\\xfe\\xdb\\xac\\x8f\\xf1^/9\\xc6\\x8e\\x0cW\\x0f\\xdadtP\\x19\\x18Z\\xc79\\x8ct\\x94\\xe7;~\\x8a\\xd3-\\x19\\xcf\\xfa\\xd99\\x8c\\x00\\x9e\\x80\\x1f\\xaa\\xc3|\\x9ai\\xa7bw\\xae\\xcb\\xa9\\xf0|O\\xf6\\xfa\\xdb\\x84\\xd1\\x10:l\\xbd\\xe5\\xf4\\x07\\x9a\\xc1\\x0bG\\xc58\\xaf\\x1c\\xe1,\\xc5\\x97/\\n\\tY;\\\\\\xe0!{\\xb5Sj\\xf9\\x13\\xdc%\\xdd\\xfag2\\xc7\\xd6\\xde\\x95\\x92\\r\\x06\\xfblz\\xdf\\xba\\xc7\\xf0\\xbcI$\\xbe\\x9ebO5\\xc3\\x10\\xcf\\x91\\x8d\\x14\\xcf\\x8d\\xf1\\xbaH\\xda\\xff\\x00\\x0eQNn\\xa1t\\xff\\x00U\\x99\\x0cn\\x06R\\xe3_f\\r\\x0e[Z\\xcb6\\x981t\\x0f\\x13\\x90\\x1av\\ndS#u\\xf3\\xdf\\xf1Y\\re\\xba;\\xed\\xab\\xe9\\xd1k\\xb8\\x9c\\xa0F\\xfa\\xe6\\xf7\\x86\\x0f\\xa6\\xeb)\\xed{ZY\\xe4\\xfd\\xf3\\xbf\\xcc\\xe3w\\\\\\x89\\x0bA\\x8f\\xc43\\xf0\\xe4\\x95\\xf8\\xb9\\x0f\\x8b[\\x9c\\\\\\x1aF\\x97{\\x83\\xb2\\xda\\xf1\\x17\\xf8P\\x1f6\\xee\\x14=o\\x9a\\xd0/K\\xe3\\xe35\\xdb\\xca\\xf9<\\x96e\\xd5\\xd3\\xbb#+/-\\xfe&L\\xb2J\\xfe\\x85\\xee\\xba\\x1d\\x80\\xe4\\xbaQ\\x17T\\xeb\\xd4p\\xdc\\xaeW\\xb1\\x11\\x14\\xaa*\\x14T \"\\xa8\\xa4DU\\x10DD@B\\x88Q(\\x94\\x88\\x80B\\x88\\x88\\x05EJ\\x88\\x08\\x88\\x82\\xa2\"\\x84\\x88\\x88\\x80\\x88\\x88\\x08\\x88\\x88\\x11TA\\x11\\x11\\x078\\xdb\\xb5\\xd2H\\xdd\\xae\\x94\\x0e\\xd3\\xf5Q\\xcf\\xba\\xdb\\xbaQ\\xc5\\x12\\x91T\\x11\\x11\\x01\\x11\\x10PKh\\xf6 \\xfbn\\xbdW\\x00\\x95\\x99q\\xe6`\\xed\\xe2\\x1b\\xcb\\xc7i5n\\x02\\xa4ez\\x9b\\xff\\x00r\\xf2\\x9b\\xae\\xc832x~F6d\\x16_\\x04\\x81\\xd4\\rj\\x1d[\\xf5X\\xf2\\xe1\\xe56\\xe9\\xf8\\xfc\\x9e9j\\xbd\\xef\\x0bk^\\xcc\\x8c\\x07\\x9b\\x1a\\x04\\xb8\\xee;\\x13\\x19\\xe9\\xee\\xd2(\\xfb\\x05\\x8d\\x95\\x88\\xe2G\\x88\\xf2\\xd0\\x1d\\xa5\\xee\\x16H\\xde\\x89\\xaf\\xf9]\\xb0\\xcb\\x0eS\\xf0\\xf2\\xf0\\\\4g\\x13\\x91\\x84I\\xda<\\xc0\\xdf\\xb5\\xc6\\x93\\xd2@57\\xd8\\xad\\x96A\\x8b\"(\\xf2X\\x08l\\x82\\xa4oX\\xde6->\\xcb\\xcf\\xef\\x1a\\xf5\\xa6\\xab\\xc1fp\\x89\\xb1\\xf3\\xdcs2\\xff\\x00\\xf9k\\xb5\\xf8Y\\'v\\xb0\\x1d\\xda\\x1e\\xd1\\xd6\\xf6\\xeb\\xcd{\\x1cI\\xbe\\n\\x8a(%\\x95\\xdc=\\x87+\\x089\\xc1\\xda_#\\xda\\xd1c\\xec\\xda\\xd2\\xeb\\xdfo*\\xc6x\\x1a\\\\\\xc2\\xd0\\xf6\\xf5k\\x80 \\x8e\\xfb\\xae8\\xd8\\xb8\\xd1\\xbd\\xced1\\xb1\\xce\\xfeV\\xb5\\xbf\\x92\\xbc\\xcezZ\\xf0y\\xff\\x00\\xebQ\\xb9\\x8b\\x8d|+\\xe1\\x86G\\x0eK\\xe4\\r\\x8c\\xb1\\xb1p\\xdc\\x9em\"\\xa9\\xda\\x1a\\x16`\\xe3o\\x99\\x83\\xfc?\\x87\\xe41\\xf1\\xbe)\\x19.tl\\x89\\x8eh>f\\x88\\xe3q\\x90\\x12\\t\\xa2H\\xfd\\x0e<ni\\r\\xd4\\xda\\xa6\\x81\\xc8,\\x98\\xb4\\xb4\\x8b\\x00\\xf6\\xb1\\xf8\\xec\\xaf3E\\xf8\\xdcS\\xde\\xeb\\x1ai\\xa7\\x9b\\'\\xf6\\x8c\\x89sG\\x89\\x8aq&\\xc6\\xc7tq\\xe3\\xbd\\xa4\\xb8\\xea\\xf0\\xc9q\\x0e\\xf38X;\\xfd)\\xb8\\xf0\\xe1\\xe39\\xb8\\xed\\x18\\x91C\\x06;\\x04qF\\\\\\xe9\\\\\\x18\\x00 9\\xf2\\x1e[t\\xee\\xb6ri\\xbb\\r\\x1b\\xdfM\\xd7\\x06\\xdf*\\xa1}\\xf7\\xf6T\\xcb\"qa\\x8f\\xf9\\x8e\\xc66\\xebn\\x9b\\xfa\\x13\\xddq\\x97fLh\\xdb\\x8cP6\\xba\\xb8\\xb9s\\x17m\\x1d\\n\\xe3\\x94\\xf6\\xc6\\x01\\x1f,6w\\xfe)\\x9f\\xb3~\\xef\\xd5en\\xd6\\xbf\\xab\\x19\\xd25\\x9e<\\x96~\\xcc\\x18\\xdb_\\xcc\\x05/7\\x937\\x8b=_\\x93\\x1d\\xbb\\xd7\\xf3\\xbbr\\xb6<K+\\xc0\\x85\\xac\\xdbSm\\xee\\xed\\xab\\xd5x\\xfc\\xac\\xd2\\xd0\"a\\xb7\\xbd\\xc4\\xbc\\xf4\\xd4\\xe3\\xc90\\xc7\\xedL\\xb2\\xd7N\\x1cK M.\\x96\\xfc\\xad\\xd8\\xfb\\xac\\x15\\xc9\\xed!\\xce\\x04\\xef\\xd5q\\xa5\\xebqMa\\x1e\\'.W,\\xe8P\"-\\x19\\x08Q\\x10EB\"\\x02\\xaa*\\xa4\\x11\\x11\\x01EQ\\x04ET@**\\x85\\x07\\x14UD\\x02\\xa2\\xa8T%\\x11\\x11\\x12\\xe4\\x88\\x88\\x84EQ\\x04EQ\\x04U\\x11\\x01\\x11\\x10DUD\\x04D@(\\x88\\xa0\\n\" \\x15\\x15D\\x04\"\\xf6;\\x8d\\xed\\x11\\x06_\\n\\xcd~\\x13\\xa5\\xc2\\x96B\\xdc<\\xa7\\xb5\\xec\\x93\\x9f\\xec\\x99L6\\xc9@\\xfc\\x0f\\xa1+\\xdc\\xe2f\\x0c\\xb8d\\xc8\\rhy&.%\\x0bM\\x88\\xf2\\x079\\x1b\\xe8F\\xe3\\xe8\\xbet\\xe0\\xd2\\x08ui\\xad\\xf5r\\xafU\\x95\\xc2\\xb8\\xceN\\x14\\xf2\\xe4F\\xd9%\\xc5\\x84G\\x06Q\\xabi\\x89\\xd7\\xa7W\\xa8\\xa3^\\xeb\\x8b\\x9f\\x8f]\\xc7\\xa3\\xf1\\xb9\\xef\\xac\\x9e\\xe5\\xd0\\xf9\\x88i\\xd4\\xd3\\xbbH\\xec\\xa4X\\xf6A\\xd5\\xb8\\'\\xddu\\xe3gb\\xcf\\xa2Hdk\\xe2\\x96\\xdc\\x08\\xe9\\xdc\\x1fP\\xb6\\x1aIx\\xaeU\\xa8;\\xd1q]\\xc7\\xa9,\\xbd\\xbbb\\x8aZ\\xad^\\xcb68\\xc8 8\\xf5\\xddcG\\xca\\xf5X\\xe6Vf>\\x97\\xb8n\\x0e\\xc7j\\x1b\\xf4Zc\\xb4ef\\x9c\\xdc\\xc6\\x00M\\xddr\\x1d\\xd7O27\\xad\\xf7YRB>v\\x90\\x1b\\xc8\\x81t\\x08\\xda\\xd61s[\\xa8\\x1a5\\xca\\xbf5\\\\\\xe5\\xda1\\xceH\\x07\\x06j=\\x07\\xdc\\x02\\xd3\\xe7q\\x06\\x07\\x1b>H\\t.\\xecd\\xec\\xb1\\xb8\\xaf\\x16d\\x01\\xf1\\xb1\\xde{\\xa2OA\\xe8\\xbc~VnFQ\\x0c\\x8c\\xb8D\\t\\xaa?1\\xeaJ\\x99\\x85\\xbe\\xd9e\\xc9>\\x99\\x1cO\\x89I;\\x9c\\xc6\\x1b$\\x97Hj\\xa8W%\\x87\\xc3p\\xe5\\xc8\\x97\\xc6p5\\xfc7\\xca\\xbf\\x99d\\xe1\\xe1\\x19\\t\\xb0H\\xe6\\xe2\\x7f%\\xe9b\\xc6d\\x18\\xc1\\xad\\x00[-\\xde\\xe7jV\\xca\\xc9\\xd4S\\x19m\\xddy\\x9e5\\x868sx6K\\xf5\\x08x\\xae\\x08\\xc9c\\xbf\\x85\\xb2\\xb5\\xe5\\x8fe\\xff\\x00\\xb4\\xfdV\\xb8\\x10\\xe0\\x08 \\x8fCa}\\x1f\\xe2.\\x103\\xfe\\t\\xe1mh\\x06|\\x1cQ\\x97\\x01\\x02\\xcf\\xd9\\x93\\xe24{\\x83\\xf8/\\x90E4\\xd0:\\xac\\x96\\xde\\xec<\\x88]\\xf8\\xdb$y9c\\xe5r\\xd7\\xf5\\xb8E\\xc6)\\x1b#\\x03\\xdam\\xa7\\xf0=\\x975\\xbf\\xb6W\\xfe\\xa2*\\x88\\x84EQH\"\"\\x02*\\x8aDET@QTP\"\\x15TA\\x11R\\xa2\\x81\\x10\\xa2\"Q\\x15D\\x1c\\x90\\xa2)B\"\\xa5\\x02\\x08\\x8a\\xa1@D\\x08\\x80\\x88\\x88\\x05EJ\\x88\\x08\\x88\\xa0DD@DD\\x04D@E\\x0b\\x9a\\xd0K\\x8d\\x01\\xcc\\x95\\x85\\x91\\x98\\x08,\\x84\\xd9;\\x17v\\x1e\\x8a\\xb7/\\x15\\xa6;3\\xb2*\\xe1c\\xb7\\xfe3\\xd4\\n\\xf9V\\xdf\\x819\\xb1p\\xdc\\xc2\\xe04\\xe5O4f\\xc5\\xd8d \\x01\\xf8\\xaf0OS\\xef\\xea\\xb6\\xb8\\x99\\x0e\\x18QC\\xd29$w\\xfb\\x8d\\xae>i\\xe7\\x8e\\x9d|sN\\x18y\\xf9X/\\x06\\x17\\x90\\xdb\\xf30\\x9f)\\xad\\xa9{\\x0e\\x1f\\xf1\\x1cR\\x06\\x87\\x1a$S\\x9a\\xff\\x00\\xe1\\xbe\\xc5xYZZ\\xf3\\xd8\\x92B5\\xf4Un\\x13\\'V9\\xd8\\xfa\\xf67\\x12\\xc6\\x90y^\\xd3c\\xa1\\xfb\\xd6Ly\\x90y\\xc8?)\\'c\\xc9|\\x9a\\x0c\\xa9\\xd8F\\x89\\xa5h\\xebOp\\x0b9\\x99S\\xb8~\\xfe[=\\x9dG\\xef\\n\\x9f\\x8d\\xa7\\xe6\\xe9\\xf4l\\x8e1\\x0c \\xb5\\xd34\\x11\\xb6\\x9d|\\xd6\\x8b\\x88|G\\xa1\\xaef3\\x83\\xa5?\\xc7\\xbe\\x96\\xfa\\xec\\xbc\\x9b\\x9c\\xe2I\\xde\\xcf;$\\x9f\\xa9Y\\x18\\x98rd9\\xa5\\xe4\\xe9\\xb1u\\xd5<u\\xee\\xa3\\xca\\xe5\\xea\\x0c\\x8f\\'2B\\xe7\\xb9\\xce\\x17\\xe7q\\xe6mm#\\xc1\\x005\\x81\\xbb\\xd7\\xdc\\x16\\xcb\\x1f\\x128X\\xd0\\x1a6\\x1c\\x87E\\x91\\x14!\\xefk\\x01\\xdc\\x9d\\xcf\\xa7U[\\x96\\xd6\\x98\\xa6&\\x1bX\\xd1\\xfc\\xa2\\xb7\\xfeg,\\xf1\\x0b\\xc8q#\\xe5m\\x81\\xdd\\xc3\\x90\\xfa\\x9a\\x0b&8\\xb94\\x03M\\x14\\x07\\xa2\\xdcp\\x8c\\x116@\\x96Aq\\xc0D\\x8e\\x07\\xf8\\x9d\\xbe\\x91\\xf9\\xac\\xb1\\x9eYil\\xb2\\xf0\\xc6\\xd6|\\xb0\\x0clN\\x1f\\x8cZ\\x0f\\x81\\x8c\\xd6\\xc8:\\x12@\\x0e\\x07\\xf1\\xfb\\xd7\\xc4>\\'\\xe0Sp\\x8c\\xec\\xa6\\xe9\\xbcG\\xb8\\xcb\\x83 \\xe5\\xe0\\xc8K\\xbc7z\\xb4\\xd8+\\xee\\xb9:\\xa4t\\xce\\xe8M{\\x81\\xd5|\\xd7\\xfe\\xa4\\x90\\xcc^\\x12\\x07\\xcd$\\x934\\xff\\x00\\xa5\\xa4\\x15\\xeb\\xe5\\x87\\xeb\\x1e\\x1e\\x19\\xfe\\xf5\\xf3\\xbc)|948\\x90\\xd9?\\x02\\xb6\\x8bA|\\xbd\\xadgc\\xe5\\x10\\xe6\\xb1\\xe7\\xc8\\xed\\x81\\xecUp\\xcbMs\\xc3}\\xb6(\\x9b\"\\xda1\\xa2\\xa8\\x88\\x81\\x11\\x10\\x11\\x02\\xa8\"\\x8a\\x94A\\x11\\x11\\x01\\x11\\x10D(\\x85\\x04QU\\x14$DD\\x1c\\x91\\x11_H\\n\\x04D\\xd0\"\\xe4\\x05\\x84-S\\xa1\\xc5\\x11\\x14h\\x10\\xa1@\\xa3B\"\\xa5D\\xd0\"\"\\x02\"&\\x81ET$\\r\\xc9\\x00w$\\x00=\\xca\\x8d\\x029\\xcdk\\\\\\xe7\\x1a\\x00n\\xba\\xdd\\x97\\x87\\x1f\\xcc\\xf7<\\xff\\x00,@\\x7f\\xfb\\x15\\x87\\x93\\x9d\\xe34\\xc6\\xc8\\x99\\x14d\\x8b\\xabs\\xcdu.?\\xd1R\\xe5\\x1a\\xe3\\x85\\xae\\x9c\\x89\\xdf3\\xba\\x86\\x0f\\x94~\\xbfU\\xd09\\x1e\\\\\\xd3\\xbe\\xe8\\xb0\\xbd\\xd6\\xd2ji\\x16f\\x11q.\\x8e\\x89\\xab \\x05\\x869\\xac\\xac)\\xc66L\\x12\\x9a\\xd1\\xabD\\x97\\xd1\\x8e\\xa0O\\xd3\\x9aH\\x9d\\xe9\\xb0\\x93\\x0cJ\\xd2\\r\\x87nF\\xdc\\x8f\\xaa\\xd6>9!q\\x8eF\\xd1\\xef\\xd0\\x8e\\xeb\\xdf\\xc7\\xc3\\xdb<l\\xf2\\x87\\xb1\\xed\\x0ec\\xd9\\xcc\\x03\\xb8\\xfe\\xab\\x0f/\\xe1\\xe9\\xa6n\\x8d\\x05\\xed7\\xa5\\xc0\\x10\\xf6\\xfb\\xda\\xb6\\\\W\\xe9ly%y\\x08\\x9c.\\x8f\\xde\\xb61\\x87\\x00+p\\x99|\\x07\\x8cp\\xf0e~,\\xee\\xc6n\\xe6F\\xc6\\xf2\\xd6\\xb7\\xbb\\x88\\xda\\x96\\xcb\\x85p\\xac\\x9c\\xd3\\x13\\xc0-\\x81\\xd4|B<\\xb5\\xfe[\\\\\\xf9u\\xed\\xd3\\xc7<\\xdd\\x10\\xc0\\xe9\\x1c\\xd1\\\\\\xcfE\\xe9\\xf8n#\\x03E\\xd0 m\\xddl\\xf1x.\\x04Ma\\xa6\\xbd\\xe0n]G\\xee\\x0b`\\xdc6F\\xe6\\x961\\xbc\\xbf\\x96\\x85{\\xac2\\xcbm\\xf5#^c4C[M\\xbf\\xa9YX\\xb8\\xfaM\\x91\\xe6\"\\xc9\\xe8\\x16`\\x85\\xa0\\xeau_M\\xb6o\\xd5s\\x8coU\\xed\\xdc\\xaa\\xdd\\xfd-\\x15\\xacq\\xd2\\xc6\\x02\\xf9\\x1e\\xe0\\xc8\\xda?\\x89\\xc7\\xa1^\\x96\\x18[\\x81\\x8a\\xc8A\\xb9\\x1d\\xe6\\x95\\xdd\\xdey\\xd7\\xa7e\\xd3\\x81\\x801\\xeb/\"\\xbcj>\\x1b:F\\xd7u>\\xa7\\xaf\\xb2\\xc8\\xdeG\\xd9\\xba\\xe5\\xba\\xec\\xf8\\xdc:\\xfd\\xab\\xcc\\xf9|\\xdeW\\xf1\\xe3\\xf4\\xe9p\\xf2\\x81\\xe8I\\xf7;/\\x93\\xff\\x00\\xd4\\xdc\\xa6;;\\x84\\xe14\\xd9\\x83\\x11\\xd3\\xcb\\xe9\\xe3?S\\x7f\\x00\\x17\\xd7d\\x00SI\\xd29\\x92\\x7f\\x85\\xa3r~\\x81~x\\xf8\\x9b\\x8a\\x0e1\\xc78\\xaes?r\\xf9\\xccx\\xfd\\x84\\x11\\x01\\x1b+\\xdc\\x0b\\xfa\\xae\\xceK\\xd6\\x9c\\\\Sym\\xa6=\\x15\\xba\\xa3\\xd4r\\\\Su\\xcc\\xebgE\\x9d#\\x1a5\\x00\\xf1\\xb5Y!\\xc2\\x96S3`p\\x1a\\x89o\\xbdl\\xb5@\\x82\\xd2\\xd3\\xcf\\xa2\\x97J\\xd3+\\x15\\xb8c}\\xb7\\xad\\x967\\xfc\\xafi\\xed\\xba\\xe7\\xd9hu\\x9d\\xa8\\xd1\\xef\\xff\\x00+&,\\xe9c\\xa0\\xf3\\xad\\xbf\\xe6\\xe6\\xb4\\x9c\\x9f\\xd6w\\x8f\\xf8\\xda\\xa2\\xe8\\x8f.\\thj\\r=\\x8a\\xef\\xed\\xda\\xb6\\xec\\xb4\\x96Vw\\x1b\\x00\\xaa\\x88\\x15\\xb4\\xaa\\xa8UP\\xa6\\x92\\x8b\\x95(\\x96\\x80B\\x88J(\\x11\\n!P\"\\x8a\\xa8\\x89\\x11\\x11\\x07\"T\\xb4Et\\x08\\x88\\x83\\x90r\\x17.(\\xa4-\\x11\\x10\\x11wC\\x8f,\\xe7\\xc86\\x1dU\\x9b\\x16h7sv=T\\x0e\\x84E\\x11+ij\\x7f}O\\xe4\\xab\\x83c\\x01\\xf39\\xb14\\xdd\\x17\\x93\\xa8\\xd7f\\xb7\\xcc\\xa2\\xa7V\\xfa9_\\xea\\x94t\\x97\\x9ak\\x077=\\xc1\\xac\\x1fU\\x8cs\\xe2i\\xfb\\x18\\xf5v|\\xd5\\xf81\\xbb,9\\xf2\\xa6\\x9c\\xdb\\xdcM^\\x91\\xb0\\x02\\xf9\\xd0\\x1b,\\xef$\\x9e\\x97\\x9c\\x7f\\xd6\\\\\\x99\\xb8\\xec\\xd9\\x8dt\\xae\\xe8H\\x0c\\x8e\\xfd\\x072\\xb0f\\x9ei\\x8e\\xa7\\x9d\\x87&\\xb7\\xe5o\\xb2\\xe9$\\x92\\xa1\\xe4\\xb1\\xb9Z\\xd6c\"\\xde\\xfdR\\xf6PrUUa\\x11\\x10EO\\xf5\\xfb\\x94=\\x15A\\xf4/\\x833\\x1b\\x97\\x8a\\xfcg\\xbc\\x99\\xb0\\x8bhr/\\x81\\xdf)\\x1e\\xdb\\x85\\xf4\\xac<\\\\w\\xc6\\xc7P67_\\x01\\xe1\\\\F~\\x17\\x9d\\x8d\\x99\\x11$F\\xf1\\xe2\\xb2\\xc8\\x12BM=\\x87\\xdf\\xa7\\xad/\\xb9p\\x8c\\xf8$d/\\x8a@\\xfcy\\xda%\\x85\\xed\\xaas\\x1d\\xbd\\x81\\xf9\\xfa\\xdfe\\xd7\\xc7\\x96\\xe3\\x9b\\x92k\\xb7\\xa0\\x8e\\xe1\\x1aZ\\xd1\\xa0\\x82\\xd2\\xdd\\xa8\\x83\\xde\\xf6Z\\xfc\\xae\\x03\\x87\\x91r`\\xf8x\\xb2\\x92K\\xe3\\x0c\\x1f\\xb3\\xbc\\x9ed\\xb1\\xbb\\x83\\xea?E\\xb6n\\x97\\x80A\\xd8\\x80\\xb95\\x80n\\x153\\xc7\\x1c\\xbd\\x98re\\x85\\xdcy\\'\\xe2fb\\xbfNDF:4\\xd7P,p\\xee\\x1e6Y\\x01\\xbeQ\\\\\\xc7\\xa5\\xfe+\\xd5y^\\x0b\\x1e\\xd0\\xe6\\x90A\\x06\\x88#\\xb2\\xd3O\\x07\\x0c\\x92ya\\xc7\\xcb\\x86)\"{Y,z\\xe2pl\\x95e\\xa1\\x84\\xf3\\xa3\\xd7e\\xc1\\x97\\x05\\x9f\\xe5\\xe9a\\xf2\\xb1\\xbf\\xe9\\xa4\\x91\\xd4\\xf6\\xc6\\xd6\\xb9\\xf2<\\xd3X\\xc0\\\\\\xe7\\x1e\\xc1\\xa1o\\xf8o\\x0c\\xfd\\x9fNFP\\x06z\\xb6\\xc67l~\\xe7\\xba\\xbc\\x1d\\x9c,\\x8c\\xa3\\x8c/*\\x19\\x9d\\x06Y\\x94\\xb5\\xd3\\xc6\\xf1\\xc9\\xa6\\x8d\\x06\\x91\\xb8\\xad\\xb7[G\\x00U\\xf0\\xe1\\xd5\\xdde\\xcd\\xf2w5\\x8b\\xa5\\xe5\\xd2\\x1fB\\x84\\x067\\xef\\xfe\\x8b\\xb6\\x80\\xdda\\xe4<\\xbd\\xcc\\x89\\x9c\\xdcC~\\xfd\\x82\\xed\\x9d\\xf4\\xf3\\xaf\\xfdx\\xef\\x8f\\xfe!o\\n\\xe1N\\xc5\\x81\\xc4g\\xf1X\\xe4\\x86\"\\x07\\xee\\xb1\\xafL\\x92\\x93\\xdd\\xdb5\\xbe\\xe7\\xb2\\xf8\\x89\\xfe\\x9e\\xbd\\x17\\xa2\\xf8\\xcb\\x8a\\xbb\\x8bq\\xfe%(u\\xc1\\x8c\\xf3\\x85\\x8a\\xd0m\\xad\\x8a\\x02Y\\xb7\\xb9\\xb3\\xf5^w\\xa2\\xcb\\x92\\xee\\xbax\\xf1\\xf1\\x8e(\\x88\\xb3h\\xa3\\xaa\\x81Q\\xd5D\\x15*\\xc8\\x1dO$T\\x8f+\\x0fr\\x7f\\nA,\\xb4\\xef\\xb5}\\xe1fC\\x97\\x91\\x1d\\x18\\xdeE\\x7f\\x0b\\x80->\\xe0\\xacK.\\xe7\\xcc&\\xe3t\\x1bf\\xf1\\x06\\xba\\xbch\\x1b\\xea\\xe8\\xac\\x1f\\xf6\\xf2]\\xcd\\xc8\\xc4\\x7f\\xc9!\\x1d\\x83\\xc0\\x1f\\x88Z=D\\xd2\\xeca\\xa3\\xff\\x00*\\xf3;\\x14\\xb8J\\xde\\x10G?\\xef\\xea\\x8b\\x07\\x1f8\\xc3L{D\\x91\\x1emwOb\\xb6!\\xb1\\xca\\xc1.9.oV\\x9f\\x9d\\x87\\xddm\\x8e{e\\x96\\x1au\\xa2\"\\xbb4%-\\x10\\xa2B\\xa2\\'\\xd5V\\xd9&\\xead\\xb7\\xd2\\x15@%r\\x01\\xbe\\xea9\\xe4WJ\\xb5\\xcf\\x97/\\xf1\\xa4\\xe3\\xc9t\"\\xe3\\xe2\\x1e\\xe8\\xa9\\xf92_\\xf1TE\\x15]\\xceq\\x11\\x14\\x82\\xaa*\\x88\\x14U\\x10n8ig\\x85C\\x98\\xdc\\xae\\xce \\xe8\\xc4.\\x04\\xee\\xb4\\xac\\x91\\xf1\\x9bk\\xa8\\xab$\\xb2\\xc9\\xf3\\xba\\xfd\\xd4\\xef\\xa1\\xd7v\\xb9\\xc7\\x1c\\xb2\\xbbDm\\xd4\\xef\\xad\\x01\\xdd\\xd5\\xc8z\\xacW\\xe5A\\x1b\\xc0sK\\xeb\\x98\\x0e,\\x1b\\x7f\\x98.9\\\\Fy\\xd8c\\x88\\xb2,\\x7f\\xfe\\xdc#H\\xff\\x00\\xc5{\\x95\\x86\\\\\\x9a\\xf4\\xd7\\x1c/\\xdb\\xbal\\xb8qu2*\\x96p\\x082\\x1a1\\xc6\\x7f\\xfcc\\xa9\\xf5Z\\x99$\\x92G\\xb9\\xf29\\xcf{\\x8d\\x978\\xd9>\\xe5B\\xe0o\\xd1q\\xb1K\\x1b\\x95\\xad\\xa4\\x92!*\\x82\\xb8\\xa5\\xaa\\xa5J\\x83\\xaa\\xa0\\xf3B\\x82+\\xd0\\xfd\\x14W\\xbf$\\x11\\x17!Gr@\\xed\\xb9Jh\\xeb\\xbf\\xa0?\\xd5\\x07\\x14\\\\\\xbc\\xbd\\xf7\\xfe\\xfdW\\x14\\x17\\xfb\\x0b\\xde|\\r\\xc5\\xe1k$\\xe0\\xf3<\\xb6c+\\xb20K\\x8d\\x87[|\\xf1\\x0f[\\x1a\\x87\\xd5x%\\xdd\\x8d\\x916.F6L$\\tq\\xe5d\\xd1\\x93\\xcb[\\x0e\\xa0\\x0f\\xa2\\xbe\\x17Wje<\\xa6\\x9f\\xa2\\xb8~pp\\xf0\\x9e\\xeax\\xad=l\\x7f\\x7f\\x9a\\xdb\\xb6Q[/\\x11\\x81\\x91\\xfe#\\xc3x\\x7f\\x18\\xc4\\x1eYc\\xd6\\xe6\\x03z\\x1e\\xc2Y#\\x0f\\xb1\\x04-\\xd66s\\\\\\xc6\\xbfW\\xfa\\x87\\xe8\\xba\\xae\\xb2\\x8eOU\\x9d\\xc6x\\xabxO\\x0fvPi|\\xf2\\xc8\\xcc|X\\xc7\\xf1\\xcc\\xfb \\x9a\\xde\\x85\\x13\\xf4\\xf5_0\\x8er\\xd6\\rfG\\xb9\\xe0\\xca\\xf7?^\\xa2\\\\\\x1e\\xe2\\xe2\\xe3\\xbe\\xe7\\x7f\\xa7\\xaa\\xda\\x7f\\xd4,\\xf9\\x04\\xff\\x00\\x0f\\xc4\\xd3Q\\xb7\\x1a|\\xa2\\x0f\\':It\\xef\\xd3m=\\x97\\x9f\\xc3\\x92)#`\\x01\\x9a\\xdf\\xa1\\x80\\x9ao\\x95\\xacx\\xab \\n\\xe7k)\\xd3i\\xe9\\xb7\\xc3\\xe2\\x19|:x3\\xf1\\x8b\\xfcHXD\\xd1^\\x98\\xf21\\x81k\\x9f\\x1c\\xae;m~Rw\\x07\\x97\"\\xbe\\xa3\\x83\\x9b\\x89\\xc41q\\xb3q\\x1f\\xe2c\\xe4F\\xd9#u\\x10h\\x8eNi\\xdc\\x11\\xc8\\x85\\xf1\\x8e(\\xf1\\x06-5\\x84\\x17\\xb7w\\r$\\xd3I\\x15\\xb1\\xdf\\x7f\\xefu\\xef>\\x1ct\\xfc+%\\x9c*rC2al\\x91\\xb4\\xdf\\x93!\\xac\\x04\\xd7\\xb8\\xfc\\xbdS)\\xb4=|\\xb2\\x00\\xd7Y^K\\xe2~2\\xde\\x11\\xc28\\x9e`udI\\x13\\xb1p\\xfb\\xf8\\xd3\\x02\\xcb\\x1f\\xe9\\x16~\\x8by\\x99\\x92#c\\xcf\\x99\\xd5@1\\x9f;\\xdc\\xe3McGs`\\x0f\\x7fU\\xf1_\\x8e\\xb8\\x84\\xf9<bL7N$o\\x0fkb\\x95\\x91\\xba\\xe1\\x8f$\\xef+\\x1b\\xdfI\\xf2\\x93\\xdd\\xa5[\\xfc\\xc51\\xc7\\xcf\\'\\x92)\\xba\\x9e\\x9d\\xbe\\x88\\xb9]\\x8be<\\xa4\\xefc\\xb9\\xa5\\x13\\xa1AhY\\xa2\\x08\\x02\\xee\\x94\\\\\\xebKA;9\\xdb\\x00y\\xd7u\\xc1\\x01r\\xe6\\xd8\\x9b\\xfeg~4\\xb8\\xaeM\\xbf\\xb3\\xf7\\xff\\x00\\xfa@;8\\xfd\\xca\\x1ek\\x9c\\xc0\\x89\\x1e=WZ\\n\\x9b\\xa9ih\\x97 Vf&\\\\\\xb8\\xee\\x124\\xd6\\x8d\\xe8\\x8b\\x0e=\\x01\\x0b\\x05r.4\\x1b{s>\\xe9\\x10\\xcd<C%\\xd2>G\\x90u\\xbbQm\\x00\\x07\\xa0\\x01lc{ec^\\xdeN\\xfc\\x0fe\\xe7\\xf7\\xe5ka\\xc3\\xe4\\xdd\\xf1\\x9e\\xbef\\xfe\\xab^<\\xae\\xf4\\xcf,f\\xb6\\xd8!P\\xa2\\xdd\\xcf\\x7f\\x8e\\xb9d\\xf0\\xc0=I\\xa0\\xb8\\t\\x9c\\xe0/\\xa2\\xea\\xcbu\\x18\\xdb\\xe8\\xba\\x18\\xfa!r\\xf2w]\\x1c{\\x8c\\xcf\\x18\\x95\\xc4\\xc9v\\xbad5D\\x1e|\\xd7\\x0b%D\\xe3\\x95\\xbd\\xe4\\xd3\\xbfZ.\\x8b(\\xad\\xf8\\xd1\\xf9+b\\x8a\\x02\\x08\\x04\\x1e};*\\xb7\\x99\\xca\\xe3\\xb8\\xd8\"*\\xac\\xaa*\\x88\\x80\\x88\\x88\\x91u\\xca\\xe2\\xd8\\xdcG\\xb2\\xecX\\xd9\\x8e-\\x8cWR\\xab\\x96Z\\x8bc7Z\\xd7\\xba\\xdcW\\x10\\xea\\xfd}\\xbb(T\\\\\\xae\\xad\\xa9\\x14}:\"\\x9d\\x13\\xa2!TDD\\x8b\\xb1\\x94\\xf3\\xa7\\xbf/u\\xd6\\x9b\\x82\\x08D\\x04\\x10\\\\\\x0f0H*\\xf3o\\xb6\\xeb\\xbeP\\xd9b\\x13\\xb7\\xf7\\x8d!\\x93\\x81\\xd4\\xf4x\\xf7\\xdf\\xeeX\\xe0\\xd1@E\\x15\\x08\\x08\\x88\\x80\\x88\\x88=\\xe7\\xfd:\\xe3\\x8c\\xc5\\xe2\\x0e\\xe0\\xb9\\xb2\\xe9\\xc0\\xe2n\\xff\\x00\\xb7.&\\xb1\\xf3\\xab\\xcaXGG\\xfc\\xae\\xe9\\xb0_K\\xcc\\xe1yPx\\x8f\\x88\\x07\\xb3\\xe6\\xb6\\n\\xbd\\xc9:\\x9b\\xdf\\xf0_\\x9e\\x9a\\\\\\xd2\\x1c\\xd2Z\\xe6\\x90Z\\xe0h\\xb5\\xc0\\xd8!~\\x86\\xf8?\\xe2\\x08\\xfe \\xe0\\xf8\\xd9\\x0e7\\x99\\x03Y\\x89\\xc4X\\xef\\x98N\\xd6\\x80_\\xfe\\x97\\xfc\\xc3\\xdc\\xf6Za\\x96\\x98r\\xe3\\xf6\\xf1\\x1f\\x18`egC\\xc33\\x18\\t\\x18\\xd8\\xb2\\xe1\\xc8\\xd07k\\xe3\\x99\\xf2\\r[\\xf6p^W\\x87LX\\xf0\\xc7\\xf2$\\x03D\\xb6\\xc6\\x87\\xb4\\x82\\x01h#\\x9f7\\xfd\\xeb\\xec<o\\x06h\\xe0\\xca0\\xc2\\xc91\\xa5\\xd3#\\xc3\\x9fO\\x88\\xb4\\xff\\x00\\x0bz\\xdd\\x9f\\xb9|\\x8d\\xd8\\xd1G\\xc5s\\x19\\x11{b\\x8eB\\xe6\\x92\\x00y\\xb1zh\\x91\\xf9\\xf4W\\xbd\\xa3\\x1b\\xf4\\xcc\\xe3z\\x1a\\xd6\\x93e\\xb4\\x1c\\xfdgo\\x98\\xc8\\x01\\xae\\xb5]J\\xfa\\xf6^\\x14\\x19\\x07\\x86\\xe75\\xbfk\\x1b\\xe0\\x91\\x8en\\xcd\\xd2[v}\\x17\\xc9x\\xa63\\x8c>3\\xa4nC\\x1e4\\x97xN\\x12\\x00\\x19\\xa4\\xf9\\x89 \\xf4\\x1c\\xff\\x005\\xf5\\x0f\\x85\\xb2\\x9f\\xc4\\xfe\\x18\\xe0Ou\\xd9\\xc6\\x18\\x93\\x93\\xbb\\xb5c\\xb8\\xe3\\xb8\\xdf\\xad~)U\\xbdF\\xbf\\x8d\\xf1O\\xf0\\x8e\\x17\\x9d\\xc7\\x1fD\\xc3\\xff\\x00o\\xc2\\xa3}\\x016d\\xb6\\xc6\\xbc\\x8297w}\\x17\\xc1\\xa4{\\xe4{\\xe4{\\x8b\\x9e\\xf79\\xeeq\\xe6\\xe78\\xd9\\'\\xdc\\xda\\xf5\\xdf\\x1f|B\\xce5\\xc5\\xff\\x00g\\xc4y<3\\x85\\x07b\\xe2\\x00O\\x87$\\x80\\xfd\\xa4\\xc1\\xbe\\xa7a\\xe8\\xd1\\xddx\\xef\\xef\\xa0Y\\xe7\\x96\\xebn<|`\\x88\\x8a\\x8d\\x05Z,\\x9e\\xc0[\\xbd\\x94\\xe8\\xb9\\x1d\\x86\\x91\\xd6\\x9c\\xef\\xd0 \\xe2\\xe2\\\\K\\x8f_\\xc8l\\x81\\n\\x04\\x05\\xc9\\x82\\xdd\\x08\\xeeG\\xe6\\xb8\\xae\\xf8\\x1b\\xab\"!\\xfc\\xbec\\xf4\\x16\\x83\\x8c\\xff\\x00\\xbe\\x97\\xd1\\xd4\\xba\\x97\\'\\x1dNy\\xe8I#\\xef\\\\P\\n\\x04(\\x10\\x11\\x10\\xa0.\\xfcWi\\x9e#\\xc8j\\x00\\xfdvX\\xea\\x82F\\xe3\\xd17\\xa3[z\\x03\\xefu\\xc9E\\xd7\\x03\\xfcH\\xa3u\\xeeF\\xfe\\xeb\\xb1u\\xcb\\xb8\\xe5\\xb3\\xb6\\x0eV\\xefp\\xec\\x02\\xc6\\xe4Wt\\xcf\\xb9\\x1f\\xe8it\\x9a\\\\\\xf7\\xdb\\xa3\\x18\\xedk\\xb5\\x02\\x14\\xba\\x0b\\x8bn\\xd7#\\xb7\\xe8\\xad\\x13\\x94\\xed-\\x14\\xb4VSL\\xe6\\xedK\\xb9\\xa4\\x1d\\x8f\\xd1b\\x17\\x1b\\xea\\xb9\\xb5\\xc6\\x86\\xff\\x00C\\xd5sj\\xe3vVO$\\\\\\x1a\\xe2z\\xfd;.b\\x8a\\xe8\\xc3\\x9a^\\xab<\\xb0\\xd7j\\x12\\x92\\x95[3JEQ\\x04\\xfd\\x16\\x06q\\xad\\xbb\\x00>\\xe5\\xb0\\xdbe\\xab\\xce$\\xbd\\xde\\x8e\\xaf\\xbbe\\x97#n/u\\x84\\x88\\x8b\\x06\\xc2\" \"\"\\x02\" \\xe6\\xc7\\x96:\\xea\\xdaAk\\xc7B\\xd3\\xcdG7I\\xab\\xb0@sOv\\x9eEq=\\x176\\x9dC\\xc3\\xea\\t,\\xf7\\xec\\x83\\x82*6\\xaf\\xcb\\xf4B+\\x97.\\x7f\\xf0\\x82\\x15\\x15D\\x00\\x88\\x88\\x0b\\xd5|\\r\\xc7_\\xc0\\xf8\\xee.\\xabv\\'\\x11tx\\x19L\\x06\\xbfx\\xf0#\\x90z\\xb4\\xfe\\x04\\xaf*\\xa8$\\x10A \\x82\\x08 \\xd1\\x04o`\\xa2,\\x97\\xdb\\xf5\\x06s\\xe1\\x8f\\x17$\\xcc\\xe6\\xb68\\xe1\\x99\\xd28\\xd0k\\x18\\x1al\\x93\\xf9/\\x8bM\\x91\\x06_\\x14\\xcd\\x9a&8D\\xe8\\xcc0\\n \\x90\\xd0\\xf2\\x0b\\xdc\\xd6\\x93\\x7f\\xdfU\\xd9\\x91\\xf1\\x9f\\x10\\xe2\\xdc\\x13\\x0f\\x87N\\xf7\\xbb(:\\xb8\\x84\\xe6\\x9ar\\x19\\x19\\x1e\\x08 \\x1fK\\x90\\xf5#\\xd1a\\xf0\\xf69\\xb6\\xf76R\\xe3\\xa0\\xb8iy\\xd9\\xeee^\\x97\\x8d\\x805\\xd5m\\xbe\\x9c\\xf8\\xe3e\\xed\\xb9tl\\x92\\x19c%\\xaf\\xa6i\\x05\\xc5\\x84\\x86\\x8dn-\\xd5(.\\xfb\\x87\\xe6\\xb0\\xe3\\xf8\\x8f\\x88\\xfc=\\xc2\\xf8\\xae\\x14\\x13\\x9b\\xcd\\x8d\\xf0\\xe2\\x01\\xa8~\\xce\\xf9\\t\\xf1%as\\x1b\\xbdn9\\xeeGm\\xf2\\xf0\\xde\\xd6\\xba9^\\xe0\\x1a\\xca{\\xe5\\xd6\\xf6\\x063Le\\xc5\\xc1\\x84\\xbbO>\\xa1x\\xde!\\x99\\x1f\\x12\\xcb\\xc9\\x92\\xe4tl\\x05\\x98\\xc1\\xcfy:z\\xb8\\x99\\t6\\xe3\\xe6>\\xea2\\xbd-1\\xf2\\xadWm\\xd4M\\xc17\\xdf\\xfe\\x11d\\xdcD\\\\\\xe3\\x8d\\xf2\\xb85\\xa3\\xdc\\xf6\\x08 \\x14\\x03\\x8f\\xa8o\\xbfu?\\xb3\\xee\\xbb\\'h\\x8d\\xfaA\\xba\\x0b\\xaa\\xd0\\x10\\xa2 \\x83\\x98Y\\x10m\\xfbL\\x9f\\xc9\\x13\\xbf\\xf5yWCy\\x93\\xd8\\x15\\xdc\\xdb\\x18\\xd3W\\xf1\\xbd\\x8d\\xfb\\x85\\xa0\\xe9\\x1d\\x7f\\xbfD\\xea\\x10uT \\xe2y\\x95B\\x1e\\x88\\x10\\x10\\xa1@\\x82 T\\xa8\\x83i\\x82\\xfdQ\\xbd\\x9dZG\\xe2\\xb3=z\\xad^\\x0b\\x88\\x9a\\xba9\\xa4\\x1f\\xcdm;.\\x8e;\\xb8\\xc39\\xaa\\xd5\\xc8\\x0e\\xb7\\x9f\\xf3\\x15\\xd6\\t]\\xf2W\\x89/\\xfa\\x8a\\xe9\\xad\\xd6\\r\\xd6\\xd7c|\\xc2\\x97Y\\xe4\\xb90\\xd6\\xea\\xd1l\\x9c\\xb49\\x17-h\\xac\\xcfq\\xc8\\xf3o\\xb2\\xeco$E\\\\\\x99b\\xedgU\\xcf\\xaa\"\\xe4\\xfbk\\x1d\\x80yB\\xb5\\xc9\\x11wp\\xff\\x00\\x96\\x19\\xfb\\x11\\x11n\\xa89\\x85\\xa8\\xca\\xf9\\xdd\\xfe\\xa7~h\\x8b\\x1eV\\xdc^\\x98\\x9d\\xbd\\xd3\\xbf\\xba\"\\xc1\\xa8:\\xa2\"\\x02\" \"\"\\x02z\\xf6\\xdd\\x11\\x07\\'\\xf3\\'\\xb8\\x05O\\xe0w\\xb8DA\\x07TD@DD\\x04DA\\x95\\x84H\\xc9\\x84tqpp\\xe8F\\x92W\\xa6\\xc6 \\xbcyY\\xbc\\x8c\\xbf+{\\xb0\\xf5\\x1e\\x81\\x11Z+\\x93\\x87\\x18\\x92X\\xf0\\xb2\\xe3c\\xcbY\\xfbN&9\\x0c\\xf2\\xdcO\\xf1\\xad\\xa7OO+~\\xe5\\xe5\\xe1\\'\\xc4\\x8b\\xd4\\x90}F\\xe8\\x89\\x920\\xf4\\xe38\\x01\\xfe\\xedi?r\\xe0\\x11\\x15W\\n\\xd9D\\xc6G\\x86\\xd9\\x98*G\\x97\\x07\\x1b\\'\\x97\\xba\"\\x98\\x86\\xb9\\xce.s\\x89\\xe6\\xa2\"\\x8a\\x08Q\\x11)\\xddw\\x12\\x7ff\\x84t2>\\xfe\\xe0\\x88\\x83\\xa8\\xf5U\\xa8\\x888\\x95GTD\\x11\\x11\\x10\\x11\\x11\\x06^\\x17\\xef\\xd8\\xb6\\xc5\\x11o\\xc5\\xea\\xb0\\xe5\\xf7\\x1a\\x99?{\\'\\xba\\x88\\x8b/\\xb6\\xbfjz(9\\x84ElS\\x93\\x92\"+\\xb3\\x7f\\xff\\xd9'\n"
     ]
    }
   ],
   "source": [
    "# 查看二进制文件\n",
    "with open('Liu_01.jpeg','rb') as f:\n",
    "    data = f.read()\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "import analyze"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on module analyze:\n",
      "\n",
      "NAME\n",
      "    analyze\n",
      "\n",
      "FUNCTIONS\n",
      "    face_analyze(API_key, API_sercret, image_path)\n",
      "        该函数为调用face++ face_analyze接口\n",
      "\n",
      "FILE\n",
      "    f:\\桌面\\api\\week04\\analyze.py\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(analyze)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'time_used': 68,\n",
       " 'error_message': 'INVALID_FACE_TOKEN: aabbc1194b00d9af8117cb355dbf9f3a',\n",
       " 'request_id': '1648551750,8be1ecb9-f207-4d6c-aed7-b47270818103'}"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "analyze.face_analyze(API_KEY,API_S,'Liu_01.jpeg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import compare"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on module compare:\n",
      "\n",
      "NAME\n",
      "    compare\n",
      "\n",
      "FUNCTIONS\n",
      "    face_compare(API_key, API_sercret, image_path)\n",
      "        该函数为调用face++ face_detect接口\n",
      "\n",
      "FILE\n",
      "    f:\\桌面\\api\\week04\\compare.py\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(compare)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'Face_token1' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-26-f5a7df177e4d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mcompare\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mface_compare\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mAPI_KEY\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mAPI_S\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m'Liu_01.jpeg'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32mF:\\桌面\\API\\week04\\compare.py\u001b[0m in \u001b[0;36mface_compare\u001b[1;34m(API_key, API_sercret, image_path)\u001b[0m\n\u001b[0;32m      7\u001b[0m             \u001b[1;34m'api_key'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mAPI_key\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m             \u001b[1;34m'api_secret'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mAPI_sercret\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m             \u001b[1;34m'image_url'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;34m'Liu_02.jpeg'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     10\u001b[0m             }\n\u001b[0;32m     11\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'Face_token1' is not defined"
     ]
    }
   ],
   "source": [
    "compare.face_compare(API_KEY,API_S,'Liu_01.jpeg')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
